@nixweb/nixloc-ui 0.0.162 → 0.0.164

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nixweb/nixloc-ui",
3
- "version": "0.0.162",
3
+ "version": "0.0.164",
4
4
  "description": "Componentes UI",
5
5
  "author": "Fábio Ávila <fabio@nixweb.com.br>",
6
6
  "private": false,
@@ -77,12 +77,12 @@ export default {
77
77
  ...mapState("generic", ["search", "executedSearch", "clearedSearch"]),
78
78
  grouped() {
79
79
  let legend = [];
80
- this.legendLocal.forEach((item) => {
80
+ /* this.legendLocal.forEach((item) => {
81
81
  if (item.showModule.includes(this.module) || item.showModule == "all")
82
82
  legend.push(item);
83
- });
83
+ });*/
84
84
 
85
- var list = this.groupBy({ array: legend, key: "groupName" });
85
+ var list = this.groupBy({ array: this.legendLocal, key: "groupName" });
86
86
  return list;
87
87
  },
88
88
  },
@@ -5,16 +5,13 @@
5
5
  <table class="table table-responsive-xs">
6
6
  <thead>
7
7
  <tr>
8
- <th
9
- v-for="(obj, ind) in headerTable"
10
- :key="ind"
11
- class="title-header"
12
- >
8
+ <th v-for="(obj, ind) in headerTableMap" :key="ind" class="title-header">
13
9
  <div class="div-select">
14
10
  <SelectStatic
15
11
  :title="obj.title"
16
12
  :data="select"
17
13
  :markFormDirty="false"
14
+ :initialValue="obj.target"
18
15
  v-model="obj.target"
19
16
  />
20
17
  </div>
@@ -49,6 +46,17 @@ export default {
49
46
  data() {
50
47
  return {};
51
48
  },
49
+ computed: {
50
+ headerTableMap() {
51
+ var i = 0;
52
+ this.headerTable.forEach((item) => {
53
+ item.target = this.select[i];
54
+ i++;
55
+ });
56
+
57
+ return this.headerTable;
58
+ },
59
+ },
52
60
  methods: {},
53
61
  };
54
62
  </script>
@@ -77,7 +85,6 @@ export default {
77
85
  font-weight: 400;
78
86
  }
79
87
 
80
-
81
88
  .tabela-description {
82
89
  white-space: nowrap;
83
90
  overflow: hidden;
@@ -185,6 +185,11 @@ export default {
185
185
  border-radius: 30px;
186
186
  }
187
187
 
188
+ .img-bank {
189
+ width: 40px;
190
+ height: 40px;
191
+ }
192
+
188
193
  .period-rent {
189
194
  cursor: pointer;
190
195
  }
@@ -6,23 +6,31 @@
6
6
  <div class="div-custom">
7
7
  <b-row>
8
8
  <b-col sm="6">
9
- <SelectRule :options="rules" class="select" v-model="selectedRule" />
10
- </b-col>
11
- <b-col sm="3">
12
- <RadioGroup
13
- :options="[
14
- { text: 'e', value: 'and' },
15
- { text: 'ou', value: 'or' },
16
- ]"
17
- v-model="andOr"
9
+ <SelectRule
10
+ :options="rules"
11
+ class="select"
12
+ v-model="selectedRule"
18
13
  />
19
14
  </b-col>
20
15
  <b-col sm="3">
21
- <button type="button" class="btn btn-secondary" @click="add">
22
- + Adicionar
23
- </button>
16
+ <div class="div-btn">
17
+ <i class="fa-solid fa-circle-plus" @click="add"></i>
18
+ </div>
24
19
  </b-col>
25
20
  </b-row>
21
+ <div class="div-and-or">
22
+ <b-row>
23
+ <b-col sm="3">
24
+ <RadioGroup
25
+ :options="[
26
+ { text: 'e', value: 'and' },
27
+ { text: 'ou', value: 'or' },
28
+ ]"
29
+ v-model="andOr"
30
+ />
31
+ </b-col>
32
+ </b-row>
33
+ </div>
26
34
  </div>
27
35
  </div>
28
36
  </div>
@@ -133,6 +141,16 @@ export default {
133
141
  </script>
134
142
 
135
143
  <style>
144
+ .card {
145
+ border: 1px solid #e8eaed !important;
146
+ background-color: white !important;
147
+ border-radius: 8px !important;
148
+ }
149
+
150
+ .card-body {
151
+ padding: 10px;
152
+ }
153
+
136
154
  .title-option {
137
155
  padding: 10px;
138
156
  }
@@ -173,6 +191,17 @@ export default {
173
191
  color: rgb(150, 150, 150);
174
192
  }
175
193
 
194
+ .div-btn {
195
+ margin-top: -3px;
196
+ font-size: 25px;
197
+ color: #577696;
198
+ cursor: pointer;
199
+ }
200
+
201
+ .div-and-or {
202
+ margin-top: 10px;
203
+ }
204
+
176
205
  @media (min-width: 768px) {
177
206
  .vue-query-builder .vqb-rule.form-inline .form-group {
178
207
  display: block;
@@ -69,6 +69,7 @@
69
69
 
70
70
  <Select
71
71
  v-if="rule.typeField == 'select'"
72
+ :showNewRegister="false"
72
73
  :url="rule.props.url"
73
74
  v-model="rule.value"
74
75
  />
@@ -13,12 +13,6 @@
13
13
  :index="index"
14
14
  />
15
15
  </draggable>
16
- <br />
17
- <div v-if="selectedRules.length == 0">
18
- <Alert type="info">
19
- Selecione o filtro desejado e clique em +Adicionar</Alert
20
- >
21
- </div>
22
16
  </div>
23
17
  </div>
24
18
  </template>
@@ -66,12 +60,11 @@ export default {
66
60
 
67
61
  <style scoped>
68
62
  .component {
69
- min-height: 450px;
70
- max-height: 450px;
71
- overflow-y: visible;
72
- overflow-x: hidden;
73
63
  padding-left: 10px;
74
64
  padding-right: 10px;
75
65
  margin-top: 10px;
66
+ max-width: 1100px;
67
+ margin: auto;
68
+ padding-top: 20px;
76
69
  }
77
70
  </style>
@@ -46,13 +46,14 @@ export default {
46
46
  outline: none;
47
47
  height: 40px;
48
48
  line-height: 40px;
49
- z-index: 1000;
49
+ z-index: 500;
50
50
  }
51
51
 
52
52
  .selected-filter .selected {
53
53
  background-color: white;
54
- border-bottom: 1px solid #dbdee0;
55
- color: black;
54
+ border: 1px solid #DBDEE0;
55
+ border-radius: 6px;
56
+ color: #495057;
56
57
  padding-left: 1em;
57
58
  cursor: pointer;
58
59
  user-select: none;
@@ -61,7 +62,7 @@ export default {
61
62
  .selected-filter .selected:after {
62
63
  position: absolute;
63
64
  content: "";
64
- top: 22px;
65
+ top: 19px;
65
66
  right: 1em;
66
67
  width: 0;
67
68
  height: 0;
@@ -9,37 +9,38 @@
9
9
  >
10
10
  <div slot="content-main">
11
11
  <br />
12
- <div v-show="!success">
12
+ <div class="div-loading" v-show="loading">
13
+ <span>
14
+ {{ msg }}
15
+ </span>
16
+ <Loading type="line" :center="false" />
17
+ </div>
18
+ <div v-show="!success && !loading">
13
19
  <b-tabs>
14
20
  <b-tab title="Importar">
15
- <div class="div-loading" v-show="loading">
16
- <span
17
- >Aguarde, estamos carregando os dados, isso pode levar alguns
18
- minutos...
19
- </span>
20
- <Loading type="line" :center="false" />
21
- </div>
22
- <div v-show="!loading">
21
+ <div>
23
22
  <div v-show="!fileName">
24
- <div class="import-icon">
25
- <i class="fas fa-file-import"></i>
26
- </div>
27
- <slot></slot>
28
23
  <Alert type="info">
29
24
  <span>
30
- Selecione o arquivo no formato <b> .xlsx </b> baseado na
31
- planilha modelo e aguarde até carregar os dados para
32
- conferência. </span
33
- ><br />
25
+ Selecione o arquivo Excel no formato
26
+ <b> .xlsx </b> baseado na planilha
27
+ <a :href="urlTemplate" class="text-download">
28
+ <b>BAIXAR MODELO</b>
29
+ </a>
30
+ e aguarde até carregar os dados para conferência.
31
+ </span>
32
+ <br />
34
33
  <span>
35
34
  Até <b> 1000 </b> itens por planilha ou <b> 1MB </b> no
36
35
  arquivo.
37
36
  </span>
38
37
  </Alert>
38
+ <br />
39
+ <slot></slot>
39
40
  <div class="div-file">
40
41
  <FileUpload
41
- title="Carregar arquivo"
42
- classIcon="fa-sharp fa-solid fa-upload"
42
+ title="Carregar .xlsx"
43
+ classIcon="fa-solid fa-file-excel"
43
44
  :container="container"
44
45
  accepted=".xlsx"
45
46
  allowed=".xlsx"
@@ -56,10 +57,13 @@
56
57
  <div class="import-icon">
57
58
  <i class="fas fa-file-import"></i>
58
59
  </div>
59
- <span>
60
+ <span v-if="!isValid">
60
61
  Efetue o <b> mapeamento </b> dos campos e clique em iniciar
61
- validação.</span
62
- >
62
+ validação.
63
+ </span>
64
+ <span v-else>
65
+ Dados <b> validado com sucesso, </b> clique em importar.
66
+ </span>
63
67
  <br />
64
68
  <div class="div-btn">
65
69
  <Button
@@ -232,6 +236,7 @@ export default {
232
236
  urlMapping: String,
233
237
  urlValidate: String,
234
238
  urlImport: String,
239
+ urlTemplate: String,
235
240
  },
236
241
  data() {
237
242
  return {
@@ -244,6 +249,8 @@ export default {
244
249
  isValid: false,
245
250
  idRemove: "",
246
251
  success: false,
252
+ msg: "",
253
+ loadingImport: false,
247
254
  };
248
255
  },
249
256
  computed: {
@@ -253,7 +260,10 @@ export default {
253
260
  ...mapActions("generic", ["postApi", "deleteAllApi"]),
254
261
  ...mapMutations("generic", ["openModal", "hideModal", "removeLoading"]),
255
262
  successUploadFile() {
263
+ this.listError = [];
256
264
  this.loading = true;
265
+ this.msg =
266
+ "Aguarde, estamos carregando os dados, isso pode levar alguns minutos...";
257
267
  let self = this;
258
268
  setTimeout(function () {
259
269
  self.mapping(self.fileName);
@@ -279,6 +289,10 @@ export default {
279
289
  });
280
290
  },
281
291
  validate() {
292
+ this.loading = true;
293
+ this.msg =
294
+ "Aguarde, estamos validando os dados, isso pode levar alguns minutos...";
295
+ this.isValid = false;
282
296
  let params = {
283
297
  url: this.urlValidate,
284
298
  obj: {
@@ -295,9 +309,16 @@ export default {
295
309
  if (this.listError.length == 0) this.isValid = true;
296
310
  }
297
311
  this.removeLoading(["btnValidate"]);
312
+ let self = this;
313
+ setTimeout(function () {
314
+ self.loading = false;
315
+ }, 2000);
298
316
  });
299
317
  },
300
318
  startImport() {
319
+ this.loading = true;
320
+ this.msg =
321
+ "Aguarde, estamos importando os dados, isso pode levar alguns minutos...";
301
322
  let params = {
302
323
  url: this.urlImport,
303
324
  obj: {
@@ -312,9 +333,9 @@ export default {
312
333
  if (response.success) {
313
334
  this.success = true;
314
335
  this.isValid = false;
315
- this.removeLoading(["btnImport"]);
316
336
  }
317
- this.removeLoading(["btnValidate"]);
337
+ this.removeLoading(["btnImport"]);
338
+ this.loading = false;
318
339
  });
319
340
  },
320
341
  removeSelected() {
@@ -342,6 +363,7 @@ export default {
342
363
  this.fileName = "";
343
364
  this.listError = [];
344
365
  this.success = false;
366
+ this.isValid = false;
345
367
  this.removeLoading(["btnBack"]);
346
368
  },
347
369
  },
@@ -384,6 +406,11 @@ export default {
384
406
  margin: auto;
385
407
  }
386
408
 
409
+ .text-download {
410
+ color: #1990ff;
411
+ cursor: pointer;
412
+ }
413
+
387
414
  .msg-success {
388
415
  font-size: 18px;
389
416
  }
@@ -9,91 +9,115 @@
9
9
  >
10
10
  <div slot="content-main">
11
11
  <br />
12
- <div
13
- class="div-progress"
14
- v-if="liveTotalRecords != baseParams.totalRecords && isLoading"
15
- >
16
- <ProgressBar
17
- :text="`Carregando ${liveTotalRecords} registro(s) de ${baseParams.totalRecords}`"
18
- :value="liveTotalRecords"
19
- :max="baseParams.totalRecords"
20
- size="medium"
21
- />
12
+ <div v-show="!showFilter">
13
+ <div
14
+ class="div-progress"
15
+ v-if="liveTotalRecords != baseParams.totalRecords"
16
+ >
17
+ <ProgressBar
18
+ :text="`Carregando ${liveTotalRecords} registro(s) de ${baseParams.totalRecords}`"
19
+ :value="liveTotalRecords"
20
+ :max="baseParams.totalRecords"
21
+ size="medium"
22
+ />
23
+ </div>
24
+ <Molded>
25
+ <b-row>
26
+ <b-col sm="6">
27
+ <div class="side-by-side">
28
+ <Button
29
+ _key="btnSearchReport"
30
+ type="primary"
31
+ title="Buscar"
32
+ classIcon="fas fa-file-search"
33
+ :disabled="btnSearchDisabled || !rulesIsValid"
34
+ size="medium"
35
+ :clicked="getAll"
36
+ />
37
+ </div>
38
+ <div class="side-by-side">
39
+ <Button
40
+ _key="btnSaveReport"
41
+ type="success"
42
+ title="Salvar"
43
+ classIcon="fas fa-save"
44
+ size="small"
45
+ :disabled="isLoading || btnSaveDisabled || !rulesIsValid"
46
+ :params="{ name: 'save', title: 'Salvar', width: 550 }"
47
+ :clicked="executeOpenModal"
48
+ />
49
+ </div>
50
+ </b-col>
51
+ <b-col class="text-right" sm="6">
52
+ <div class="side-by-side">
53
+ <Button
54
+ _key="btnExecuteOpenModal"
55
+ type="info"
56
+ title="Campos"
57
+ classIcon="fas fa-database"
58
+ size="small"
59
+ :disabled="isLoading"
60
+ :params="{ name: 'fields', title: 'Campos', width: 550 }"
61
+ :clicked="executeOpenModal"
62
+ />
63
+ </div>
64
+ <div class="side-by-side">
65
+ <Button
66
+ _key="btnExecuteOpenModal"
67
+ type="info"
68
+ title="Filtros"
69
+ classIcon="fas fa-filter"
70
+ size="small"
71
+ :disabled="isLoading"
72
+ :params="{ name: 'rules', title: 'Filtros', width: 900 }"
73
+ :clicked="executeShowFilter"
74
+ />
75
+ </div>
76
+ </b-col>
77
+ </b-row>
78
+ </Molded>
79
+ <div class="div-tags">
80
+ <Tags eventName="tagReport" />
81
+ </div>
82
+ <div class="div-required" v-show="!rulesIsValid">
83
+ <Alert type="info" v-for="rule in rulesRequired" :key="rule.id">
84
+ É necessário informar o filtro
85
+ <span class="filter-required">{{ rule.title }}</span
86
+ >, clique no botão "Filtros" para adicionar.
87
+ </Alert>
88
+ </div>
89
+ <div class="body-report" v-show="showBodyReport && rulesIsValid">
90
+ <Report
91
+ :header="content.headerTable"
92
+ :data="content.data"
93
+ :totalization="content.totalization"
94
+ />
95
+ </div>
22
96
  </div>
23
- <Molded>
24
- <b-row>
25
- <b-col sm="6">
26
- <div class="side-by-side">
27
- <Button
28
- _key="btnSearchReport"
29
- type="primary"
30
- title="Buscar"
31
- classIcon="fas fa-file-search"
32
- :disabled="btnSearchDisabled || !rulesIsValid"
33
- size="medium"
34
- :clicked="getAll"
35
- />
36
- </div>
37
- <div class="side-by-side">
38
- <Button
39
- _key="btnSaveReport"
40
- type="success"
41
- title="Salvar"
42
- classIcon="fas fa-save"
43
- size="small"
44
- :disabled="isLoading || btnSaveDisabled || !rulesIsValid"
45
- :params="{ name: 'save', title: 'Salvar', width: 550 }"
46
- :clicked="executeOpenModal"
47
- />
48
- </div>
49
- </b-col>
50
- <b-col class="text-right" sm="6">
51
- <div class="side-by-side">
52
- <Button
53
- _key="btnExecuteOpenModal"
54
- type="info"
55
- title="Campos"
56
- classIcon="fas fa-database"
57
- size="small"
58
- :disabled="isLoading"
59
- :params="{ name: 'fields', title: 'Campos', width: 550 }"
60
- :clicked="executeOpenModal"
61
- />
62
- </div>
63
- <div class="side-by-side">
64
- <Button
65
- _key="btnExecuteOpenModal"
66
- type="info"
67
- title="Filtros"
68
- classIcon="fas fa-filter"
69
- size="small"
70
- :disabled="isLoading"
71
- :params="{ name: 'rules', title: 'Filtros', width: 900 }"
72
- :clicked="executeOpenModal"
73
- />
74
- </div>
75
- </b-col>
76
- </b-row>
77
- </Molded>
78
- <div class="div-tags">
79
- <Tags eventName="tagReport" />
80
- </div>
81
- <div class="div-required" v-show="!rulesIsValid">
82
- <Alert type="warning" v-for="rule in rulesRequired" :key="rule.id">
83
- É necessário informar o filtro
84
- <span class="filter-required">{{ rule.title }}</span
85
- >, clique no botão "Filtros" para adicionar.
86
- </Alert>
87
- </div>
88
- <div class="body-report" v-show="showBodyReport && rulesIsValid">
89
- <Report
90
- :header="content.headerTable"
91
- :data="content.data"
92
- :totalization="content.totalization"
93
- />
97
+ <div v-show="showFilter">
98
+ <Rules />
99
+ <br />
100
+ <div class="text-center">
101
+ <Button
102
+ _key="btnCancelFilter"
103
+ type="info"
104
+ classIcon="fa-solid fa-arrow-left"
105
+ size="small"
106
+ :clicked="executeHideFilter"
107
+ />
108
+ <Button
109
+ _key="btnApplyFilter"
110
+ type="primary"
111
+ title="Aplicar"
112
+ classIcon="fas fa-filter"
113
+ size="small"
114
+ :clicked="executeHideFilter"
115
+ />
116
+ </div>
94
117
  </div>
95
118
  </div>
96
119
  </Panel>
120
+
97
121
  <Modal
98
122
  :title="modalOptions.title"
99
123
  :width="modalOptions.width"
@@ -104,7 +128,6 @@
104
128
  v-show="modalOptions.name == 'save'"
105
129
  />
106
130
  <Fields v-if="modalOptions.name == 'fields'" />
107
- <Rules v-show="modalOptions.name == 'rules'" />
108
131
  <div
109
132
  class="text-right btn-apply"
110
133
  v-show="modalOptions.name == 'fields' || modalOptions.name == 'rules'"
@@ -171,7 +194,7 @@ export default {
171
194
  },
172
195
  baseParams: {
173
196
  currentPage: 0,
174
- totalPerPage: 100,
197
+ totalPerPage: 50,
175
198
  totalPage: 0,
176
199
  totalRecords: 0,
177
200
  },
@@ -184,6 +207,7 @@ export default {
184
207
  btnSaveDisabled: true,
185
208
  isLoading: false,
186
209
  showBodyReport: false,
210
+ showFilter: false,
187
211
  };
188
212
  },
189
213
  mounted() {
@@ -307,6 +331,14 @@ export default {
307
331
  this.removeLoading(["btnExecuteOpenModal", "btnSaveReport"]);
308
332
  }
309
333
  },
334
+ executeShowFilter() {
335
+ this.showFilter = true;
336
+ this.removeLoading(["btnExecuteOpenModal", "btnSaveReport"]);
337
+ },
338
+ executeHideFilter() {
339
+ this.showFilter = false;
340
+ this.removeLoading(["btnCancelFilter", "btnApplyFilter"]);
341
+ },
310
342
  applyFieldsAndRules() {
311
343
  this.hideModal("templateReport");
312
344
  this.removeLoading(["btnApplyFieldsAndRules"]);
@@ -361,7 +393,7 @@ export default {
361
393
  let self = this;
362
394
  setTimeout(function () {
363
395
  self.getAllManyPages();
364
- }, 200);
396
+ }, 1000);
365
397
  }
366
398
  if (totalPages.length == 1) this.isLoading = false;
367
399
  },