@nixweb/nixloc-ui 0.0.146 → 0.0.148

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.146",
3
+ "version": "0.0.148",
4
4
  "description": "Componentes UI",
5
5
  "author": "Fábio Ávila <fabio@nixweb.com.br>",
6
6
  "private": false,
@@ -90,9 +90,6 @@ export default {
90
90
  font-weight: normal;
91
91
  font-style: normal !important;
92
92
  letter-spacing: 1px !important;
93
- -webkit-box-shadow: 0px 10px 20px -6px rgb(0 0 0 / 12%);
94
- -moz-box-shadow: 0px 10px 20px -6px rgba(0, 0, 0, 0.12);
95
- box-shadow: 0px 10px 20px -6px rgb(0 0 0 / 12%);
96
93
  }
97
94
 
98
95
  .small {
@@ -110,7 +107,6 @@ export default {
110
107
  font-size: 14px;
111
108
  }
112
109
 
113
-
114
110
  .disabled {
115
111
  background: #bbbbbb !important;
116
112
  border-color: #bbbbbb !important;
@@ -71,7 +71,8 @@ export default {
71
71
  }
72
72
 
73
73
  .selected {
74
- background-color: #f7f7f7;
74
+ background-color: #4BB4E2;
75
+ color:white;
75
76
  padding-left: 10px;
76
77
  padding-right: 10px;
77
78
  border-radius: 15px;
@@ -59,7 +59,7 @@ export default {
59
59
  <style scoped>
60
60
  .photo-container {
61
61
  margin-top: -37px;
62
- padding-right: 10px;
62
+ padding-right: 30px;
63
63
  cursor: pointer;
64
64
  position: fixed;
65
65
  float: right;
@@ -1,7 +1,8 @@
1
1
  <template>
2
2
  <div>
3
+ <div class="top-margin"></div>
3
4
  <div class="top" :style="'background-color:' + backgroundColor">
4
- <div class="side-by-side">
5
+ <div class="side-by-side top-space">
5
6
  <slot></slot>
6
7
  </div>
7
8
  </div>
@@ -25,14 +26,32 @@ export default {
25
26
 
26
27
  <style scoped>
27
28
  .top {
28
- border-radius: 0px 0px 0px 0px;
29
+ border-radius: 12px 12px 12px 12px;
30
+ margin-top: 7px;
31
+ left: 120px;
32
+ right: 1%;
29
33
  height: 50px;
30
- width: 100%;
31
- position: fixed;
32
34
  top: 0;
33
- left: 100px;
34
- z-index: 20;
35
+ z-index: 1000;
35
36
  box-shadow: 0px 10px 30px -6px rgb(0 0 0 / 10%);
36
37
  border-bottom: 0px solid #eff0f1;
38
+ position: fixed;
39
+ }
40
+
41
+ .top-space {
42
+ margin-right: 10px;
43
+ width: 100%;
44
+ }
45
+
46
+ .top-margin {
47
+ width: 100%;
48
+ widows: 100%;
49
+ height: 10px;
50
+ margin-right: 80px;
51
+ top: 0;
52
+ margin-left: 120px;
53
+ z-index: 1000;
54
+ background-color: #fdfdfd;
55
+ position: fixed;
37
56
  }
38
57
  </style>
@@ -7,7 +7,15 @@
7
7
  v-b-tooltip.hover
8
8
  :title="icon.tooltip"
9
9
  >
10
- <div class="icon-molded"><i :class="icon.icon"></i></div>
10
+ <div
11
+ class="icon-molded"
12
+ :class="{
13
+ 'icon-active-top': menuActive == icon.module,
14
+ 'icon-normal-top': menuActive != icon.module,
15
+ }"
16
+ >
17
+ <i :class="icon.icon"></i>
18
+ </div>
11
19
  </div>
12
20
  </div>
13
21
  </template>
@@ -20,6 +28,9 @@ export default {
20
28
  props: {
21
29
  icons: Array,
22
30
  },
31
+ data() {
32
+ return { menuActive: "" };
33
+ },
23
34
  methods: {
24
35
  ...mapMutations("generic", ["addEvent"]),
25
36
  executeEvent(eventName) {
@@ -28,6 +39,14 @@ export default {
28
39
  });
29
40
  },
30
41
  },
42
+ watch: {
43
+ $route: {
44
+ handler: function (router) {
45
+ this.menuActive = router.matched[0].props.default.module;
46
+ },
47
+ deep: true,
48
+ },
49
+ },
31
50
  };
32
51
  </script>
33
52
 
@@ -6,44 +6,43 @@
6
6
  <img :src="urlImage" />
7
7
  </div>
8
8
  </li>
9
- <!-- <li>
10
- <div :class="{ 'menu-active': menuActive == 'Dashboard' }">
11
- <a
12
- href="#"
13
- @click.prevent="navegateTo({ routeName: 'dashboard', module: 'Dashboard' })"
14
- :class="highlightSession('home')"
15
- >
16
- <div class="div-icon side-by-side">
17
- <i
18
- :class="{
19
- 'icon-active': menuActive == 'Dashboard',
20
- 'icon-normal': menuActive != 'Dashboard',
21
- }"
22
- class="fas fa-chart-area icon-dash"
23
- ></i>
24
- </div>
25
- <div class="title">Dashboard</div>
26
- </a>
27
- </div>
28
- </li>-->
29
- <li v-for="(item, index) in menuFilter(true)" :key="index">
30
- <div :class="{ 'menu-active': menuActive == item.module }">
9
+ <li class="molded">
10
+ <div
11
+ class="box-main"
12
+ v-for="(item, index) in menuFilter(true)"
13
+ :key="index"
14
+ >
31
15
  <a
32
16
  href="#"
33
17
  @click.prevent="openSubMenu(item.module)"
34
18
  :class="highlightSession(item.module)"
35
19
  >
36
- <div class="div-icon side-by-side">
37
- <span
38
- :class="{
39
- 'icon-active': menuActive == item.module,
40
- 'icon-normal': menuActive != item.module,
41
- }"
42
- >
43
- <i :class="item.icon"></i>
44
- </span>
20
+ <div
21
+ :class="{
22
+ 'icon-active': menuActive == item.module,
23
+ 'icon-normal': menuActive != item.module,
24
+ }"
25
+ >
26
+ <b-row>
27
+ <b-col sm="12">
28
+ <div class="box-icon text-center">
29
+ <i :class="item.icon"></i></div
30
+ ></b-col>
31
+ </b-row>
32
+ <b-row>
33
+ <b-col sm="12">
34
+ <div class="div-title text-center">
35
+ <span
36
+ :class="{
37
+ 'title-active': menuActive == item.module,
38
+ 'title-normal': menuActive != item.module,
39
+ }"
40
+ >{{ item.title }}</span
41
+ >
42
+ </div>
43
+ </b-col>
44
+ </b-row>
45
45
  </div>
46
- <div class="title">{{ item.title }}</div>
47
46
  </a>
48
47
  </div>
49
48
  </li>
@@ -73,12 +72,16 @@
73
72
  >
74
73
  <b-row>
75
74
  <b-col sm="1">
76
- <i :class="item.icon" aria-hidden="true"></i
77
- ></b-col>
75
+ <i
76
+ class="menu-icon"
77
+ :style="'color:' + item.iconColor"
78
+ :class="item.icon"
79
+ ></i>
80
+ </b-col>
78
81
  <b-col sm="10">
79
- <span class="title-sub"> {{ item.title }}</span></b-col
80
- ></b-row
81
- >
82
+ <span class="title-sub"> {{ item.title }}</span>
83
+ </b-col>
84
+ </b-row>
82
85
  </a>
83
86
  </li>
84
87
  </ul>
@@ -173,41 +176,66 @@ export default {
173
176
  z-index: 1000;
174
177
  }
175
178
  .div-logo {
176
- padding-top: 4px;
177
- padding-bottom: 6px;
178
- }
179
- .div-icon {
180
- width: 35px;
181
- height: 35px;
182
- padding-top: 5px;
183
- margin-left: 38px;
179
+ padding-top: 12px;
180
+ padding-left: 10px;
181
+ padding-bottom: 15px;
184
182
  }
183
+
185
184
  .icon-close {
186
- margin-right: 60px;
185
+ margin-right: 10px;
186
+ margin-top: -5px;
187
+ font-size: 22px;
187
188
  }
189
+
188
190
  .icon {
189
191
  font-size: 20px;
190
192
  }
193
+
191
194
  .icon-dash {
192
195
  font-size: 22px;
193
196
  }
194
- .title {
195
- font-size: 13px;
196
- font-weight: 400;
197
- margin-top: -5px;
198
- text-align: center;
199
- width: 100%;
197
+
198
+ .box-main {
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: center;
202
+ }
203
+
204
+ .box-icon {
205
+ width: 80px;
206
+ border-radius: 18px;
207
+ }
208
+
209
+ .div-title {
210
+ margin-top: -17px;
200
211
  }
212
+
201
213
  .title-sub {
202
214
  margin-left: -3px;
203
215
  font-weight: 400;
204
216
  }
217
+
205
218
  .sub-title {
206
219
  font-size: 16px;
207
220
  font-weight: normal;
208
221
  }
222
+
209
223
  img {
210
224
  height: 36px;
211
225
  margin-top: 5px;
212
226
  }
227
+
228
+ .menu-icon {
229
+ font-size: 15px;
230
+ }
231
+
232
+ .molded {
233
+ margin-top: 5px;
234
+ margin-left: 10px;
235
+ padding: 5px;
236
+ padding-bottom: 1px !important;
237
+ background-color: white !important;
238
+ border: 1px solid #e8eaed;
239
+ border-radius: 12px !important;
240
+ }
213
241
  </style>
@@ -17,12 +17,13 @@ export default {
17
17
  </script>
18
18
  <style scoped>
19
19
  .molded {
20
- border: 1px solid #E5E4E8;
20
+ border: 1px solid #e8eaed;
21
21
  background-color: white;
22
+ border-radius: 12px !important;
23
+ padding: 10px;
22
24
  padding-top: 15px;
23
25
  padding-left: 30px;
24
26
  padding-right: 30px;
25
27
  padding-bottom: 10px;
26
- box-shadow: 0px 10px 20px -6px rgb(0 0 0 / 3%);
27
28
  }
28
29
  </style>
@@ -135,6 +135,8 @@ export default {
135
135
  }
136
136
 
137
137
  .panel {
138
- padding: 25px;
138
+ margin-top: 50px;
139
+ padding-left: 30px;
140
+ padding-right: 30px;
139
141
  }
140
142
  </style>
@@ -0,0 +1,70 @@
1
+ <template>
2
+ <div>
3
+ <ScrollBar :minHeight="400" :maxHeight="400">
4
+ <div>
5
+ <br />
6
+ <table class="table table-responsive-xs">
7
+ <thead>
8
+ <tr>
9
+ <th class="title-header">Mensagem</th>
10
+ </tr>
11
+ </thead>
12
+ <tbody v-for="error in listError">
13
+ <tr>
14
+ <td>
15
+ <span class="message"> {{ error }}</span>
16
+ </td>
17
+ </tr>
18
+ </tbody>
19
+ </table>
20
+ </div>
21
+ </ScrollBar>
22
+ </div>
23
+ </template>
24
+
25
+ <script>
26
+ import ScrollBar from "@nixweb/nixloc-ui/src/component/layout/ScrollBar.vue";
27
+
28
+ export default {
29
+ name: "ListErrorImport",
30
+ props: {
31
+ listError: Array,
32
+ },
33
+ components: {
34
+ ScrollBar,
35
+ },
36
+ };
37
+ </script><style scoped>
38
+ .table th,
39
+ .table td {
40
+ height: 10px !important;
41
+ padding-left: 5px !important;
42
+ padding-top: 7px !important;
43
+ padding-bottom: 5px !important;
44
+ padding-right: 5px !important;
45
+ padding-left: 10px !important;
46
+ border-bottom: 0px !important;
47
+ }
48
+
49
+ .title-header {
50
+ font-size: 14px;
51
+ color: #757d8c;
52
+ font-weight: 400;
53
+ }
54
+
55
+ .tabela-principal {
56
+ font-size: 14px;
57
+ max-width: 200px;
58
+ }
59
+
60
+ .tabela-descricao {
61
+ white-space: nowrap;
62
+ overflow: hidden;
63
+ text-overflow: ellipsis;
64
+ max-width: 200px;
65
+ }
66
+
67
+ .message {
68
+ color: red;
69
+ }
70
+ </style>
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div>
3
- <FixedBar position="footer" v-show="formDirty && !modal.open">
3
+ <FixedBar position="footer" backgroundColor="#FAFAFC" v-show="formDirty && !modal.open">
4
4
  <div class="margin">
5
5
  <Button
6
6
  _key="cancelSaveCancel"
@@ -132,6 +132,11 @@ table tbody tr td {
132
132
  border-bottom: 0px !important;
133
133
  }
134
134
 
135
+ .table thead tr {
136
+ background-color: #FAFAFC !important;
137
+
138
+ }
139
+
135
140
  .td-checkbox {
136
141
  width: 30px;
137
142
  }
@@ -78,6 +78,7 @@ export default {
78
78
  font-weight: 400;
79
79
  }
80
80
 
81
+
81
82
  .tabela-description {
82
83
  white-space: nowrap;
83
84
  overflow: hidden;
@@ -9,8 +9,18 @@
9
9
  >
10
10
  <div slot="content-main">
11
11
  <br />
12
- <Molded>
12
+ <div class="div-loading" v-show="loading">
13
+ <span
14
+ >Aguarde, estamos carregando os dados, isso pode levar alguns
15
+ minutos...</span
16
+ >
17
+ <Loading type="line" :center="false" />
18
+ </div>
19
+ <Molded v-show="!loading">
13
20
  <div v-show="!fileName">
21
+ <div class="import-icon">
22
+ <i class="fas fa-file-import"></i>
23
+ </div>
14
24
  <slot></slot>
15
25
  <Alert type="info">
16
26
  <span>
@@ -24,8 +34,8 @@
24
34
  </Alert>
25
35
  <div class="div-file">
26
36
  <FileUpload
27
- title="Carregar arquivo .xlsx"
28
- classIcon="fa-solid fa-file-excel"
37
+ title="Carregar arquivo"
38
+ classIcon="fa-sharp fa-solid fa-upload"
29
39
  :container="container"
30
40
  accepted=".xlsx"
31
41
  allowed=".xlsx"
@@ -38,14 +48,6 @@
38
48
  />
39
49
  </div>
40
50
  </div>
41
-
42
- <div class="div-loading" v-show="loading">
43
- <span
44
- >Aguarde, estamos carregando os dados, isso pode levar alguns
45
- minutos...</span
46
- >
47
- <Loading type="line" :center="false" />
48
- </div>
49
51
  <div v-show="fileName && !loading">
50
52
  <div class="import-icon">
51
53
  <i class="fas fa-file-import"></i>
@@ -65,23 +67,40 @@
65
67
  :clicked="back"
66
68
  />
67
69
  <Button
68
- _key="print"
70
+ v-if="!isValid"
71
+ _key="btnValidate"
69
72
  type="primary"
70
73
  title="Iniciar Validação"
71
- :disabled="true"
74
+ :disabled="false"
72
75
  classIcon="fa-solid fa-arrow-right-arrow-left"
73
76
  size="small"
74
- :clicked="print"
77
+ :clicked="validate"
78
+ />
79
+ <Button
80
+ v-if="listError.length > 0"
81
+ _key="btnListError"
82
+ type="danger"
83
+ title="Erro(s)"
84
+ classIcon="fa-sharp fa-solid fa-triangle-exclamation"
85
+ size="small"
86
+ :clicked="openListError"
75
87
  />
76
88
  </div>
77
89
  <br />
90
+ <Alert type="danger" v-if="listError.length > 0">
91
+ <span>
92
+ Atenção, foram identificados
93
+ <b>{{ listError.length }}</b> erro(s), corrija-os!
94
+ </span>
95
+ </Alert>
78
96
  <Alert type="info">
79
97
  <span>
80
- Total de <b> {{ totalRecords }} </b> registro(s), porem para o
81
- mapeamento serão carregados somente os <b> 10 </b> primeiros
82
- registros (se houver).
98
+ Total de <b> {{ totalRecords }} </b> registro(s), para o
99
+ mapeamento serão carregados somente os <b> 10 </b> primeiros (se
100
+ houver).
83
101
  </span>
84
102
  </Alert>
103
+
85
104
  <TableImport
86
105
  :select="select"
87
106
  :headerTable="headerTable"
@@ -91,6 +110,14 @@
91
110
  </Molded>
92
111
  </div>
93
112
  </Panel>
113
+ <Modal
114
+ title="Erro(s)"
115
+ :width="900"
116
+ :height="750"
117
+ v-show="showModal('listError')"
118
+ >
119
+ <ListErrorImport :listError="listError" />
120
+ </Modal>
94
121
  </div>
95
122
  </template>
96
123
 
@@ -101,10 +128,12 @@ import Molded from "@nixweb/nixloc-ui/src/component/layout/Molded";
101
128
  import FileUpload from "@nixweb/nixloc-ui/src/component/forms/FileUpload";
102
129
  import Loading from "@nixweb/nixloc-ui/src/component/shared/Loading.vue";
103
130
  import Alert from "@nixweb/nixloc-ui/src/component/layout/Alert";
131
+ import Modal from "@nixweb/nixloc-ui/src/component/forms/Modal";
104
132
 
105
133
  import TableImport from "@nixweb/nixloc-ui/src/component/shared/TableImport.vue";
134
+ import ListErrorImport from "@nixweb/nixloc-ui/src/component/shared/ListErrorImport.vue";
106
135
 
107
- import { mapState, mapActions, mapMutations } from "vuex";
136
+ import { mapState, mapActions, mapMutations, mapGetters } from "vuex";
108
137
 
109
138
  export default {
110
139
  name: "ViewTemplateImportFileView",
@@ -114,28 +143,36 @@ export default {
114
143
  Molded,
115
144
  FileUpload,
116
145
  Loading,
146
+ ListErrorImport,
117
147
  TableImport,
118
148
  Alert,
149
+ Modal,
119
150
  },
120
151
  props: {
121
152
  panel: Object,
122
153
  select: Array,
123
154
  container: String,
124
155
  typeImport: Number,
156
+ urlMapping: String,
157
+ urlValidate: String,
125
158
  },
126
159
  data() {
127
160
  return {
128
161
  fileName: "",
129
- urlMapping: "/api/v1/stock/import-product/mapping",
130
162
  loading: false,
131
163
  headerTable: [],
132
164
  data: [],
133
165
  totalRecords: 0,
166
+ listError: [],
167
+ isValid: false,
134
168
  };
135
169
  },
170
+ computed: {
171
+ ...mapGetters("generic", ["showModal"]),
172
+ },
136
173
  methods: {
137
174
  ...mapActions("generic", ["postApi"]),
138
- ...mapMutations("generic", ["removeLoading"]),
175
+ ...mapMutations("generic", ["openModal", "removeLoading"]),
139
176
  successUploadFile() {
140
177
  this.loading = true;
141
178
  let self = this;
@@ -162,8 +199,32 @@ export default {
162
199
  }
163
200
  });
164
201
  },
202
+ validate() {
203
+ let params = {
204
+ url: this.urlValidate,
205
+ obj: {
206
+ fileName: this.fileName,
207
+ container: this.container,
208
+ typeImport: this.typeImport,
209
+ items: this.headerTable,
210
+ },
211
+ notNotifyToast: true,
212
+ };
213
+ this.postApi(params).then((response) => {
214
+ if (response.success) {
215
+ this.listError = response.content;
216
+ if (this.listError.length == 0) this.isValid = true;
217
+ }
218
+ this.removeLoading(["btnValidate"]);
219
+ });
220
+ },
221
+ openListError() {
222
+ this.openModal("listError");
223
+ this.removeLoading(["btnListError"]);
224
+ },
165
225
  back() {
166
226
  this.fileName = "";
227
+ this.listError = [];
167
228
  this.removeLoading(["btnBack"]);
168
229
  },
169
230
  },
@@ -9,7 +9,14 @@
9
9
  >
10
10
  <div slot="content-main">
11
11
  <b-row>
12
- <b-col xs="12" sm="12" md="12" lg="6" xl="6" v-if="allReports.saved.length > 0">
12
+ <b-col
13
+ xs="12"
14
+ sm="12"
15
+ md="12"
16
+ lg="6"
17
+ xl="6"
18
+ v-if="allReports.saved.length > 0"
19
+ >
13
20
  <div><i class="fas fa-file-alt icon-saved"></i> Personalizado</div>
14
21
  <hr class="hr" />
15
22
  <div class="div-molded" v-for="report in allReports.saved">
@@ -40,7 +47,9 @@
40
47
  </div>
41
48
  </b-col>
42
49
  <b-col xs="12" sm="12" md="12" lg="6" xl="6">
43
- <div><i class="fas fa-file-chart-line"></i> Padrão</div>
50
+ <div>
51
+ <i class="fas fa-file-chart-line icon-default"></i> Padrão
52
+ </div>
44
53
  <hr class="hr" />
45
54
  <div class="div-molded" v-for="report in allReports.default">
46
55
  <div>
@@ -179,6 +188,11 @@ export default {
179
188
  <style scoped>
180
189
  .icon-saved {
181
190
  color: #94aa2a;
191
+ font-size: 20px;
192
+ }
193
+
194
+ .icon-default {
195
+ font-size: 20px;
182
196
  }
183
197
 
184
198
  .icon-remove {