@burh/nuxt-core 1.0.460 → 1.0.462
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/Avatar/AvatarLink.vue +5 -1
- package/components/burh-ds/Curriculum/UserCurriculum/UserCvLeftSide.vue +0 -4
- package/components/burh-ds/Modals/AppConfigModal.vue +231 -30
- package/components/burh-ds/Modals/InviteToRole.vue +21 -6
- package/components/layouts/burh-ds/footer/ProductsFooter.vue +9 -9
- package/package.json +1 -1
- package/plugins/dashboard/globalComponents.js +7 -0
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
<span @click="handleClick">
|
|
3
3
|
<div class="media align-items-center">
|
|
4
4
|
<span class="avatar avatar-sm rounded-circle">
|
|
5
|
-
<
|
|
5
|
+
<image-with-fallback
|
|
6
|
+
:src="logo"
|
|
7
|
+
:alt="`Logo da empresa ${name}`"
|
|
8
|
+
:fallbackText="name"
|
|
9
|
+
/>
|
|
6
10
|
</span>
|
|
7
11
|
<div class="media-body ml-2 d-none d-lg-block" v-if="!isCompany">
|
|
8
12
|
<span class="mb-0 text-sm font-weight-bold">
|
|
@@ -3,15 +3,11 @@
|
|
|
3
3
|
<div class="profile w-100 text-center">
|
|
4
4
|
<div class="avatar">
|
|
5
5
|
<image-with-fallback
|
|
6
|
-
v-if="userData.urlAvatar"
|
|
7
6
|
:src="userData.urlAvatar"
|
|
8
7
|
:alt="userData.name"
|
|
9
8
|
:fallbackText="userData.name"
|
|
10
9
|
fallbackSize="1024"
|
|
11
10
|
/>
|
|
12
|
-
<div v-else class=".">
|
|
13
|
-
{{ userData.name }}
|
|
14
|
-
</div>
|
|
15
11
|
</div>
|
|
16
12
|
|
|
17
13
|
<h5
|
|
@@ -97,24 +97,66 @@
|
|
|
97
97
|
v-for="(buttons, index) in buttons"
|
|
98
98
|
:key="index"
|
|
99
99
|
>
|
|
100
|
-
<
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
100
|
+
<div v-if="haveCustomTime">
|
|
101
|
+
<button
|
|
102
|
+
v-if="buttons.id != 8"
|
|
103
|
+
role="button"
|
|
104
|
+
class="tag tag-outline-primary d-block w-100 buttons"
|
|
105
|
+
:value="buttons.value"
|
|
106
|
+
:class="
|
|
107
|
+
buttons.id == currentSelectedButton
|
|
108
|
+
? 'active'
|
|
109
|
+
: ''
|
|
110
|
+
"
|
|
111
|
+
@click="timeSelection(buttons.id)"
|
|
112
|
+
>
|
|
113
|
+
<i
|
|
114
|
+
v-if="buttons.id == currentSelectedButton"
|
|
115
|
+
class="fas fa-check mr-1"
|
|
116
|
+
></i>
|
|
117
|
+
<small>{{ buttons.time }}</small>
|
|
118
|
+
</button>
|
|
119
|
+
<div :class="
|
|
106
120
|
buttons.id == currentSelectedButton
|
|
107
|
-
? 'active'
|
|
108
|
-
: ''
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
? 'active-time'
|
|
122
|
+
: ''" class="custom-time-div">
|
|
123
|
+
<i
|
|
124
|
+
v-if="buttons.id == currentSelectedButton && buttons.value"
|
|
125
|
+
class="fas fa-check mr-1"
|
|
126
|
+
:class="[currentSelectedButton == 8 ? 'custom-icon': 'custom-time-icon']"
|
|
127
|
+
></i>
|
|
128
|
+
<!-- <div v-if="buttons.id == 8" @click="setInitValue(buttons.id)">
|
|
129
|
+
<el-time-picker
|
|
130
|
+
format="HH:mm:ss"
|
|
131
|
+
value-format="HH:mm:ss"
|
|
132
|
+
v-model="buttons.value"
|
|
133
|
+
@change="setValueChange()"
|
|
134
|
+
:class="currentSelectedButton == buttons.id ? 'active-custom': 'not-active-custom' "
|
|
135
|
+
class="w-100"
|
|
136
|
+
placeholder="Outro">
|
|
137
|
+
</el-time-picker>
|
|
138
|
+
</div> -->
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
<div v-else-if="!haveCustomTime">
|
|
142
|
+
<button
|
|
143
|
+
role="button"
|
|
144
|
+
class="tag tag-outline-primary d-block w-100 buttons"
|
|
145
|
+
:value="buttons.value"
|
|
146
|
+
:class="
|
|
147
|
+
buttons.id == currentSelectedButton
|
|
148
|
+
? 'active'
|
|
149
|
+
: ''
|
|
150
|
+
"
|
|
151
|
+
@click="timeSelection(buttons.id)"
|
|
152
|
+
>
|
|
153
|
+
<i
|
|
154
|
+
v-if="buttons.id == currentSelectedButton"
|
|
155
|
+
class="fas fa-check mr-1"
|
|
156
|
+
></i>
|
|
157
|
+
<small>{{ buttons.time }}</small>
|
|
158
|
+
</button>
|
|
159
|
+
</div>
|
|
118
160
|
</div>
|
|
119
161
|
</div>
|
|
120
162
|
</div>
|
|
@@ -142,11 +184,13 @@
|
|
|
142
184
|
</template>
|
|
143
185
|
<script>
|
|
144
186
|
import { mask } from 'vue-the-mask';
|
|
145
|
-
import
|
|
187
|
+
import swal from 'sweetalert2';
|
|
188
|
+
import { Select, Option, TimePicker } from 'element-ui';
|
|
146
189
|
export default {
|
|
147
190
|
components: {
|
|
148
191
|
[Select.name]: Select,
|
|
149
|
-
[Option.name]: Option
|
|
192
|
+
[Option.name]: Option,
|
|
193
|
+
[TimePicker.name]: TimePicker,
|
|
150
194
|
},
|
|
151
195
|
directives: { mask },
|
|
152
196
|
data() {
|
|
@@ -178,6 +222,14 @@ export default {
|
|
|
178
222
|
thirdInput: 'Insira a carga horária do curso'
|
|
179
223
|
})
|
|
180
224
|
},
|
|
225
|
+
haveCustomTime:{
|
|
226
|
+
type:Boolean,
|
|
227
|
+
default:false
|
|
228
|
+
},
|
|
229
|
+
deadLineTime:{
|
|
230
|
+
type:Number,
|
|
231
|
+
default:0
|
|
232
|
+
},
|
|
181
233
|
show: {
|
|
182
234
|
type: Boolean,
|
|
183
235
|
default: false
|
|
@@ -197,14 +249,14 @@ export default {
|
|
|
197
249
|
buttons: {
|
|
198
250
|
type: Array,
|
|
199
251
|
default: () => [
|
|
200
|
-
{ id: '1', time: '5 minutos', value: '00:05:00' },
|
|
201
|
-
{ id: '2', time: '10 minutos', value: '00:10:00' },
|
|
202
|
-
{ id: '3', time: '15 minutos', value: '00:15:00' },
|
|
203
|
-
{ id: '4', time: '30 minutos', value: '00:30:00' },
|
|
204
|
-
{ id: '5', time: '45 minutos', value: '00:45:00' },
|
|
205
|
-
{ id: '6', time: '60 minutos', value: '01:00:00' },
|
|
206
|
-
{ id: '7', time: '2 horas', value: '02:00:00' },
|
|
207
|
-
{ id: '8', time: '
|
|
252
|
+
{ id: '1', time: '5 minutos', value: '00:05:00', custom: false },
|
|
253
|
+
{ id: '2', time: '10 minutos', value: '00:10:00', custom: false },
|
|
254
|
+
{ id: '3', time: '15 minutos', value: '00:15:00', custom: false },
|
|
255
|
+
{ id: '4', time: '30 minutos', value: '00:30:00', custom: false },
|
|
256
|
+
{ id: '5', time: '45 minutos', value: '00:45:00', custom: false },
|
|
257
|
+
{ id: '6', time: '60 minutos', value: '01:00:00', custom: false },
|
|
258
|
+
{ id: '7', time: '2 horas', value: '02:00:00', custom: false },
|
|
259
|
+
{ id: '8', time: 'Outro', value: null, custom: true }
|
|
208
260
|
],
|
|
209
261
|
description: 'Botoes de tempo'
|
|
210
262
|
},
|
|
@@ -269,6 +321,9 @@ export default {
|
|
|
269
321
|
workloadValue(newValue) {
|
|
270
322
|
this.configInfo.workload = newValue;
|
|
271
323
|
},
|
|
324
|
+
deadLineTime(){
|
|
325
|
+
this.loadTime();
|
|
326
|
+
},
|
|
272
327
|
time(newValue) {
|
|
273
328
|
this.configInfo.selectedTime = newValue;
|
|
274
329
|
},
|
|
@@ -295,11 +350,40 @@ export default {
|
|
|
295
350
|
set(show) {
|
|
296
351
|
this.$emit('input', show);
|
|
297
352
|
}
|
|
298
|
-
}
|
|
353
|
+
},
|
|
299
354
|
},
|
|
300
355
|
methods: {
|
|
356
|
+
setInitValue(id){
|
|
357
|
+
this.currentSelectedButton = id;
|
|
358
|
+
let getIndex = this.buttons.findIndex((e)=>e.custom == true);
|
|
359
|
+
if(!this.buttons[getIndex].value){
|
|
360
|
+
this.buttons[getIndex].value = null;
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
setValueChange(){
|
|
364
|
+
this.configInfo.selectedTime = this.buttons.find((e)=>e.custom == true).value;
|
|
365
|
+
},
|
|
301
366
|
loadTime() {
|
|
302
|
-
let time =
|
|
367
|
+
let time = null;
|
|
368
|
+
let deadLineTime = null;
|
|
369
|
+
if(this.deadLineTime == 0){
|
|
370
|
+
deadLineTime = this.buttons.find(e => e.value == 'null');
|
|
371
|
+
}
|
|
372
|
+
if(this.deadLineTime){
|
|
373
|
+
deadLineTime = this.buttons.find(e => e.value == this.deadLineTime);
|
|
374
|
+
}
|
|
375
|
+
if(deadLineTime != null){
|
|
376
|
+
this.currentSelectedButton = deadLineTime.id;
|
|
377
|
+
this.configInfo.selectedTime = this.deadLineTime;
|
|
378
|
+
return;
|
|
379
|
+
}
|
|
380
|
+
if(this.time && this.time != 'null'){
|
|
381
|
+
time = this.buttons.find(e => e.value === this.time);
|
|
382
|
+
if(!time){
|
|
383
|
+
time = this.buttons.find(e => e.custom === true);
|
|
384
|
+
time.value = this.time;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
303
387
|
if (time != null) {
|
|
304
388
|
this.currentSelectedButton = time.id;
|
|
305
389
|
this.configInfo.selectedTime = this.time;
|
|
@@ -312,16 +396,35 @@ export default {
|
|
|
312
396
|
}
|
|
313
397
|
},
|
|
314
398
|
timeSelection(buttonId) {
|
|
315
|
-
let btn =
|
|
399
|
+
let btn = this.buttons.find((e)=>e.id == buttonId);
|
|
400
|
+
if(this.haveCustomTime && buttonId){
|
|
401
|
+
if(buttonId != 8 ){
|
|
402
|
+
this.buttons[7].value = null;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
316
405
|
this.configInfo.selectedTime = btn.value;
|
|
317
406
|
this.currentSelectedButton = buttonId;
|
|
318
407
|
},
|
|
319
408
|
async sendConfig() {
|
|
409
|
+
let customButton = this.buttons.find((e) => e.custom == true);
|
|
320
410
|
const pass = await this.$refs.appConfigModal.validate();
|
|
321
411
|
if (!pass) {
|
|
322
412
|
return;
|
|
323
413
|
}
|
|
324
414
|
let config;
|
|
415
|
+
if(this.haveCustomTime && this.currentSelectedButton == customButton.id){
|
|
416
|
+
if(!customButton.value){
|
|
417
|
+
return this.showMessage('É necessário selecionar um tempo');
|
|
418
|
+
}
|
|
419
|
+
let timeReplaced = customButton.value.replaceAll(':', '');
|
|
420
|
+
|
|
421
|
+
if(timeReplaced == '000000' || timeReplaced.length < 6){
|
|
422
|
+
return this.showMessage('Tempo inválido');
|
|
423
|
+
}
|
|
424
|
+
if(timeReplaced > 240000){
|
|
425
|
+
return this.showMessage('O tempo não pode ser maior que 24 horas');
|
|
426
|
+
}
|
|
427
|
+
}
|
|
325
428
|
if (!this.isCourse) {
|
|
326
429
|
config = {
|
|
327
430
|
title: this.configInfo.title,
|
|
@@ -339,6 +442,19 @@ export default {
|
|
|
339
442
|
}
|
|
340
443
|
this.$emit('send-config-info', config);
|
|
341
444
|
this.openModal = false;
|
|
445
|
+
},
|
|
446
|
+
showMessage(title, type = 'error'){
|
|
447
|
+
const Toast = swal.mixin({
|
|
448
|
+
toast: true,
|
|
449
|
+
position: 'top-end',
|
|
450
|
+
showConfirmButton: false,
|
|
451
|
+
timer: 3100,
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
return Toast.fire({
|
|
455
|
+
type: type,
|
|
456
|
+
title: title
|
|
457
|
+
});
|
|
342
458
|
}
|
|
343
459
|
}
|
|
344
460
|
};
|
|
@@ -388,3 +504,88 @@ export default {
|
|
|
388
504
|
}
|
|
389
505
|
}
|
|
390
506
|
</style>
|
|
507
|
+
<style lang="scss" scoped>
|
|
508
|
+
.custom-time::placeholder{
|
|
509
|
+
font-size: 80%;
|
|
510
|
+
color:#00b388;
|
|
511
|
+
}
|
|
512
|
+
/deep/
|
|
513
|
+
.custom-time:hover::placeholder{
|
|
514
|
+
color: #fff;
|
|
515
|
+
}
|
|
516
|
+
.active-time{
|
|
517
|
+
background-color:#00B388;
|
|
518
|
+
}
|
|
519
|
+
.custom-time-div{
|
|
520
|
+
position: relative;
|
|
521
|
+
.custom-time-icon{
|
|
522
|
+
position:absolute;
|
|
523
|
+
top:1rem;
|
|
524
|
+
left:1.5rem;
|
|
525
|
+
color:#fff;
|
|
526
|
+
}
|
|
527
|
+
.custom-icon{
|
|
528
|
+
position:absolute;
|
|
529
|
+
top:1rem;
|
|
530
|
+
z-index: 3;
|
|
531
|
+
left:2rem;
|
|
532
|
+
color:#fff;
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
/deep/ .active-custom{
|
|
536
|
+
.el-time-panel{
|
|
537
|
+
width: 15.5%;
|
|
538
|
+
}
|
|
539
|
+
.el-input__inner{
|
|
540
|
+
background-color: #00b388;
|
|
541
|
+
border: 2px solid #00b388;
|
|
542
|
+
display: block;
|
|
543
|
+
height: 51.39px;
|
|
544
|
+
color:#fff;
|
|
545
|
+
text-align: center;
|
|
546
|
+
&::placeholder{
|
|
547
|
+
color:#fff;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
.el-input__prefix{
|
|
551
|
+
.el-icon-time:before{
|
|
552
|
+
color:#fff;
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
.el-input__suffix{
|
|
556
|
+
.el-input__suffix-inner{
|
|
557
|
+
.el-icon-circle-close{
|
|
558
|
+
color:#fff;
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
/deep/ .not-active-custom{
|
|
564
|
+
.el-time-panel{
|
|
565
|
+
width: 15.5%;
|
|
566
|
+
}
|
|
567
|
+
.el-input__inner{
|
|
568
|
+
border: 2px solid #00b388;
|
|
569
|
+
display: block;
|
|
570
|
+
height: 51.39px;
|
|
571
|
+
color:#00b388;
|
|
572
|
+
text-align: center;
|
|
573
|
+
&::placeholder{
|
|
574
|
+
color:#00b388;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
.el-input__prefix{
|
|
578
|
+
.el-icon-time:before{
|
|
579
|
+
position: relative;
|
|
580
|
+
color:#00b388;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
.el-input__suffix{
|
|
584
|
+
.el-input__suffix-inner{
|
|
585
|
+
.el-icon-circle-close{
|
|
586
|
+
color:#00b388;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
</style>
|
|
@@ -46,14 +46,20 @@
|
|
|
46
46
|
</validation-provider>
|
|
47
47
|
|
|
48
48
|
<div class="select__container px-3">
|
|
49
|
-
<
|
|
49
|
+
<validation-provider
|
|
50
|
+
tag="div"
|
|
51
|
+
name="Setor"
|
|
52
|
+
rules="required"
|
|
53
|
+
v-slot="{ errors }"
|
|
54
|
+
>
|
|
50
55
|
<label for="select" class="form-control-label">Setor</label>
|
|
51
56
|
|
|
52
57
|
<el-select
|
|
53
|
-
class="
|
|
58
|
+
class="w-100"
|
|
54
59
|
id="select"
|
|
55
60
|
placeholder="Setor"
|
|
56
61
|
v-model="slot.role"
|
|
62
|
+
:class="{'is-invalid': errors[0]}"
|
|
57
63
|
clearable
|
|
58
64
|
>
|
|
59
65
|
<div class="text-center" slot="empty">
|
|
@@ -67,10 +73,14 @@
|
|
|
67
73
|
:key="role.id"
|
|
68
74
|
:label="role.level"
|
|
69
75
|
:value="role.level"
|
|
70
|
-
|
|
71
|
-
</el-option>
|
|
76
|
+
/>
|
|
72
77
|
</el-select>
|
|
73
|
-
|
|
78
|
+
<div
|
|
79
|
+
class="invalid-feedback"
|
|
80
|
+
style="display: block;">
|
|
81
|
+
{{ errors[0] }}
|
|
82
|
+
</div>
|
|
83
|
+
</validation-provider>
|
|
74
84
|
|
|
75
85
|
<div name="role">
|
|
76
86
|
<label for="buffer" class="form-control-label">Vincular ao buffer</label>
|
|
@@ -219,7 +229,7 @@ export default {
|
|
|
219
229
|
};
|
|
220
230
|
},
|
|
221
231
|
resetSlots() {
|
|
222
|
-
this.$refs.inviteUser.reset();
|
|
232
|
+
this.$refs && this.$refs.inviteUser && this.$refs.inviteUser.reset();
|
|
223
233
|
this.slots = [];
|
|
224
234
|
this.slots.push(this.getSlot());
|
|
225
235
|
}
|
|
@@ -236,6 +246,11 @@ export default {
|
|
|
236
246
|
};
|
|
237
247
|
</script>
|
|
238
248
|
<style lang="scss" scoped>
|
|
249
|
+
.is-invalid {
|
|
250
|
+
/deep/ input {
|
|
251
|
+
border-color: #de214b!important;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
239
254
|
.send-test-modal {
|
|
240
255
|
position: fixed;
|
|
241
256
|
overflow-y: scroll;
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
<ul class="product__content--list">
|
|
30
30
|
<li><a :href="`${baseAppUrl}/busca`">Busca Avançada</a></li>
|
|
31
31
|
<li>
|
|
32
|
-
<a :href="`${
|
|
32
|
+
<a :href="`${baseAppUrl}/recrutamento`"
|
|
33
33
|
>Recrutamento</a
|
|
34
34
|
>
|
|
35
35
|
</li>
|
|
36
36
|
<li>
|
|
37
|
-
<a :href="`${
|
|
37
|
+
<a :href="`${baseAppUrl}/universidades`"
|
|
38
38
|
>Busca por Universidades</a
|
|
39
39
|
>
|
|
40
40
|
</li>
|
|
@@ -170,15 +170,15 @@ export default {
|
|
|
170
170
|
data() {
|
|
171
171
|
return {
|
|
172
172
|
year: new Date().getFullYear(),
|
|
173
|
-
url: '',
|
|
174
|
-
baseAppUrl: '',
|
|
175
|
-
oldBusinessUrl: ''
|
|
176
173
|
};
|
|
177
174
|
},
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
computed: {
|
|
176
|
+
url() {
|
|
177
|
+
return process.env.baseUserUrl;
|
|
178
|
+
},
|
|
179
|
+
baseAppUrl() {
|
|
180
|
+
return process.env.baseAppUrl;
|
|
181
|
+
}
|
|
182
182
|
}
|
|
183
183
|
};
|
|
184
184
|
</script>
|
package/package.json
CHANGED
|
@@ -16,7 +16,14 @@ import RouteBreadcrumb from '~/components/argon-core/Breadcrumb/RouteBreadcrumb'
|
|
|
16
16
|
import StatsCard from '~/components/argon-core/Cards/StatsCard.vue';
|
|
17
17
|
import ImageWithFallback from '@/components/burh-ds/Img/ImageWithFallback.vue';
|
|
18
18
|
import { Input, Tooltip, Popover } from 'element-ui';
|
|
19
|
+
|
|
20
|
+
import lang from 'element-ui/lib/locale/lang/pt-br';
|
|
21
|
+
import locale from 'element-ui/lib/locale';
|
|
22
|
+
|
|
19
23
|
import Vue from 'vue';
|
|
24
|
+
|
|
25
|
+
locale.use(lang);
|
|
26
|
+
|
|
20
27
|
/**
|
|
21
28
|
* You can register global components here and use them as a plugin in your main Vue instance
|
|
22
29
|
*/
|