@burh/nuxt-core 1.0.311 → 1.0.313
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/components/burh-ds/Modals/SendCourse.vue +109 -176
- package/package.json +1 -1
|
@@ -1,118 +1,78 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<modal :show="isModalOpen" v-on:close="closeModal" size="xl" class="modal">
|
|
3
3
|
<template slot="header">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Insira os e-mail que deseja enviar o treinamento <br>
|
|
7
|
-
<div style="display: inline-block;">
|
|
8
|
-
<el-switch
|
|
9
|
-
v-model="switchSingle"
|
|
10
|
-
active-color="#5865F2"
|
|
11
|
-
inactive-text="Usuario em específico"
|
|
12
|
-
active-text="Enviar em massa">
|
|
13
|
-
</el-switch>
|
|
14
|
-
</div>
|
|
4
|
+
<h2 class="display-4 px-4">
|
|
5
|
+
Insira os e-mail que deseja enviar o treinamento
|
|
15
6
|
</h2>
|
|
16
7
|
</template>
|
|
17
|
-
<div
|
|
18
|
-
<div class="
|
|
19
|
-
<
|
|
20
|
-
<label for="name">Nome Completo</label>
|
|
21
|
-
</div>
|
|
22
|
-
<div class="col-4">
|
|
23
|
-
<label for="email">E-mail</label>
|
|
24
|
-
</div>
|
|
25
|
-
<div class="col-4">
|
|
26
|
-
<label for="email">Cargo</label>
|
|
27
|
-
</div>
|
|
8
|
+
<div class="row px-4">
|
|
9
|
+
<div class="col-6">
|
|
10
|
+
<label for="name">Nome Completo</label>
|
|
28
11
|
</div>
|
|
29
|
-
<
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
12
|
+
<div class="col-6">
|
|
13
|
+
<label for="email">E-mail</label>
|
|
14
|
+
</div>
|
|
15
|
+
<!-- <div class="col-4">
|
|
16
|
+
<label for="email">Cargo</label>
|
|
17
|
+
</div> -->
|
|
18
|
+
</div>
|
|
19
|
+
<validation-observer ref="sendCourse">
|
|
20
|
+
<div class="row px-4" v-for="(slot, idx) in slots" :key="idx">
|
|
21
|
+
<validation-provider
|
|
22
|
+
tag="div"
|
|
23
|
+
class="col-6"
|
|
24
|
+
:vid="`send-name-${idx}`"
|
|
25
|
+
name="Nome"
|
|
26
|
+
rules="required|regex:\w+\s+\w+"
|
|
27
|
+
v-slot="{ errors }"
|
|
28
|
+
>
|
|
29
|
+
<base-input
|
|
30
|
+
v-model="slot.name"
|
|
31
|
+
:error="errors[0]"
|
|
32
|
+
:valid="errors.length ? true : false"
|
|
33
|
+
/>
|
|
34
|
+
</validation-provider>
|
|
46
35
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
<validation-provider
|
|
37
|
+
tag="div"
|
|
38
|
+
class="col-5"
|
|
39
|
+
:vid="`send-email-${idx}`"
|
|
40
|
+
name="Email"
|
|
41
|
+
rules="required|email"
|
|
42
|
+
v-slot="{ errors }"
|
|
43
|
+
>
|
|
44
|
+
<base-input
|
|
45
|
+
v-model="slot.email"
|
|
46
|
+
:error="errors[0]"
|
|
47
|
+
:valid="errors.length ? true : false"
|
|
48
|
+
/>
|
|
49
|
+
</validation-provider>
|
|
50
|
+
<!-- <div tag="div" class="col-3" name="role">
|
|
51
|
+
<el-select
|
|
52
|
+
class="select-danger"
|
|
53
|
+
v-model="slot.role"
|
|
54
|
+
:placeholder="''"
|
|
55
55
|
>
|
|
56
|
-
<
|
|
57
|
-
v-
|
|
58
|
-
:
|
|
59
|
-
:
|
|
60
|
-
|
|
61
|
-
</validation-provider>
|
|
62
|
-
<div tag="div" class="col-3" name="role">
|
|
63
|
-
<el-select
|
|
64
|
-
class="select-danger"
|
|
65
|
-
v-model="selectedRole"
|
|
66
|
-
style="height: 50px"
|
|
67
|
-
:placeholder="''"
|
|
56
|
+
<el-option
|
|
57
|
+
v-for="role in corporativeRole"
|
|
58
|
+
:key="role.id"
|
|
59
|
+
:label="role.name"
|
|
60
|
+
:value="role.id"
|
|
68
61
|
>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
<
|
|
79
|
-
<i
|
|
80
|
-
v-if="idx !== payload.users.length - 1"
|
|
81
|
-
class="fa fa-trash pointer"
|
|
82
|
-
@click="removeSlot(idx)"
|
|
83
|
-
></i>
|
|
84
|
-
<i v-else class="fa fa-plus pointer" @click="addSlot"></i>
|
|
85
|
-
</div>
|
|
62
|
+
</el-option>
|
|
63
|
+
</el-select>
|
|
64
|
+
</div> -->
|
|
65
|
+
<div class="col-1">
|
|
66
|
+
<i
|
|
67
|
+
v-if="idx !== slots.length - 1"
|
|
68
|
+
class="fa fa-trash pointer"
|
|
69
|
+
@click="removeSlot(idx)"
|
|
70
|
+
></i>
|
|
71
|
+
<i v-else class="fa fa-plus pointer" @click="addSlot"></i>
|
|
86
72
|
</div>
|
|
87
|
-
</validation-observer>
|
|
88
|
-
</div>
|
|
89
|
-
<!-- envio em massa -->
|
|
90
|
-
<div v-else style="height:100px">
|
|
91
|
-
<div class="px-4">
|
|
92
|
-
<label for="email">Cargo</label>
|
|
93
73
|
</div>
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
<div tag="div" class="col-12" name="role">
|
|
97
|
-
<el-select
|
|
98
|
-
class="select-danger"
|
|
99
|
-
multiple
|
|
100
|
-
style="width: 100%;"
|
|
101
|
-
v-model="selectedRole"
|
|
102
|
-
:placeholder="''"
|
|
103
|
-
>
|
|
104
|
-
<el-option
|
|
105
|
-
v-for="role in corporativeRole"
|
|
106
|
-
:key="role.id"
|
|
107
|
-
:label="role.name"
|
|
108
|
-
:value="role.id"
|
|
109
|
-
>
|
|
110
|
-
</el-option>
|
|
111
|
-
</el-select>
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</validation-observer>
|
|
115
|
-
</div>
|
|
74
|
+
</validation-observer>
|
|
75
|
+
|
|
116
76
|
<hr />
|
|
117
77
|
|
|
118
78
|
<div class="row px-4">
|
|
@@ -149,14 +109,13 @@
|
|
|
149
109
|
</template>
|
|
150
110
|
|
|
151
111
|
<script>
|
|
152
|
-
import { Select, Option
|
|
112
|
+
import { Select, Option } from 'element-ui';
|
|
153
113
|
|
|
154
114
|
export default {
|
|
155
115
|
name: 'send-course',
|
|
156
116
|
components: {
|
|
157
117
|
[Select.name]: Select,
|
|
158
|
-
[Option.name]: Option
|
|
159
|
-
[Switch.name]: Switch
|
|
118
|
+
[Option.name]: Option
|
|
160
119
|
},
|
|
161
120
|
props: {
|
|
162
121
|
isModalOpen: {
|
|
@@ -173,7 +132,7 @@ export default {
|
|
|
173
132
|
},
|
|
174
133
|
|
|
175
134
|
removeSlot(idx) {
|
|
176
|
-
this.
|
|
135
|
+
this.slots.splice(idx, 1);
|
|
177
136
|
},
|
|
178
137
|
|
|
179
138
|
addSlot() {
|
|
@@ -181,10 +140,10 @@ export default {
|
|
|
181
140
|
idx: '',
|
|
182
141
|
name: '',
|
|
183
142
|
email: '',
|
|
184
|
-
|
|
143
|
+
role: ''
|
|
185
144
|
};
|
|
186
145
|
|
|
187
|
-
this.
|
|
146
|
+
this.slots = [...this.slots, newSlot];
|
|
188
147
|
},
|
|
189
148
|
|
|
190
149
|
async sendTest() {
|
|
@@ -194,56 +153,43 @@ export default {
|
|
|
194
153
|
return;
|
|
195
154
|
}
|
|
196
155
|
|
|
197
|
-
const
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
)
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
let params = {
|
|
221
|
-
users: formatRequest(),
|
|
222
|
-
courses: formattedCourses,
|
|
223
|
-
|
|
224
|
-
};
|
|
225
|
-
this.resetSlots();
|
|
226
|
-
this.$emit('send-course', params);
|
|
227
|
-
} else {
|
|
228
|
-
|
|
229
|
-
let params = {
|
|
230
|
-
courses: formattedCourses,
|
|
231
|
-
access_levels: this.selectedRole.map(id => {
|
|
232
|
-
return { id };
|
|
233
|
-
})
|
|
234
|
-
|
|
156
|
+
const filterSlots = slot => slot.email !== '';
|
|
157
|
+
|
|
158
|
+
const formatRequest = () => {
|
|
159
|
+
let formattedCourses = this.coursesToSend.map(course => ({
|
|
160
|
+
course_id: course
|
|
161
|
+
}));
|
|
162
|
+
|
|
163
|
+
let formattedSlots = this.slots
|
|
164
|
+
.filter(filterSlots)
|
|
165
|
+
.map(slot => ({
|
|
166
|
+
name: slot.name.substring(slot.name.indexOf(' '), 0),
|
|
167
|
+
last_name: slot.name.substring(
|
|
168
|
+
slot.name.indexOf(' ') + 1
|
|
169
|
+
),
|
|
170
|
+
email: slot.email,
|
|
171
|
+
courses: formattedCourses,
|
|
172
|
+
role_id: slot.role
|
|
173
|
+
}));
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
...formattedSlots
|
|
235
177
|
};
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
let params = {
|
|
181
|
+
users: formatRequest()
|
|
182
|
+
};
|
|
183
|
+
this.resetSlots();
|
|
184
|
+
this.$emit('send-course', params);
|
|
239
185
|
},
|
|
240
186
|
resetSlots() {
|
|
241
|
-
this.
|
|
187
|
+
this.slots = [
|
|
242
188
|
{
|
|
243
189
|
idx: '',
|
|
244
190
|
name: '',
|
|
245
191
|
email: '',
|
|
246
|
-
|
|
192
|
+
role: ''
|
|
247
193
|
}
|
|
248
194
|
];
|
|
249
195
|
}
|
|
@@ -251,26 +197,19 @@ export default {
|
|
|
251
197
|
watch: {
|
|
252
198
|
selectedCourse(newValue) {
|
|
253
199
|
this.coursesToSend = newValue ? [newValue] : [];
|
|
254
|
-
}
|
|
255
|
-
switchSingle(){this.selectedRole = '';}
|
|
200
|
+
}
|
|
256
201
|
},
|
|
257
202
|
data() {
|
|
258
203
|
return {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
courses: [{ id: '' }],
|
|
269
|
-
access_levels:[{ id: '' }]
|
|
270
|
-
},
|
|
271
|
-
selectedRole: '',
|
|
272
|
-
switchSingle: false,
|
|
273
|
-
coursesToSend: [],
|
|
204
|
+
slots: [
|
|
205
|
+
{
|
|
206
|
+
idx: '',
|
|
207
|
+
name: '',
|
|
208
|
+
email: '',
|
|
209
|
+
role: ''
|
|
210
|
+
}
|
|
211
|
+
],
|
|
212
|
+
coursesToSend: []
|
|
274
213
|
};
|
|
275
214
|
}
|
|
276
215
|
};
|
|
@@ -292,10 +231,4 @@ export default {
|
|
|
292
231
|
.pointer {
|
|
293
232
|
cursor: pointer;
|
|
294
233
|
}
|
|
295
|
-
/deep/ .el-switch__label{
|
|
296
|
-
height: 13.5px !important;
|
|
297
|
-
&.is-active{
|
|
298
|
-
color: #5865F2 !important;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
234
|
</style>
|