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