@burh/nuxt-core 1.0.508 → 1.0.509
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.
|
@@ -36,6 +36,46 @@
|
|
|
36
36
|
</template>
|
|
37
37
|
</button>
|
|
38
38
|
</div>
|
|
39
|
+
<!-- CV -->
|
|
40
|
+
<div class="about content-block mt-5 ml-3 mr-3" v-if="userData.user_curriculum && userData.user_curriculum.annex">
|
|
41
|
+
<h5 class="font-weight-bold">
|
|
42
|
+
Cadastro Simplificado
|
|
43
|
+
<el-tooltip
|
|
44
|
+
placement="top"
|
|
45
|
+
>
|
|
46
|
+
<div style="max-width: 300px" slot="content">
|
|
47
|
+
O cadastro simplificado é uma solução criada pela Burh para facilitar a candidatura em vagas sem que seja necessário o preenchimento completo do perfil do candidato, apenas a importação do currículo.
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<span class="text-primary ml-2">
|
|
51
|
+
<i class="fas fa-info-circle"></i>
|
|
52
|
+
</span>
|
|
53
|
+
</el-tooltip>
|
|
54
|
+
|
|
55
|
+
<button
|
|
56
|
+
class="cv__box mt-2"
|
|
57
|
+
:disabled="isCvDownloading"
|
|
58
|
+
@click="() => !isCvDownloading && handleDownloadCv(userData.user_curriculum)"
|
|
59
|
+
>
|
|
60
|
+
<template v-if="!isCvDownloading">
|
|
61
|
+
<span>
|
|
62
|
+
<i class="fas fa-download"></i>
|
|
63
|
+
</span>
|
|
64
|
+
|
|
65
|
+
<span class="font-weight-bold">Baixar Currículo</span>
|
|
66
|
+
</template>
|
|
67
|
+
|
|
68
|
+
<template v-else>
|
|
69
|
+
<span>
|
|
70
|
+
<i class="fas fa-spinner spin"></i>
|
|
71
|
+
</span>
|
|
72
|
+
|
|
73
|
+
<span class="font-weight-bold">Baixando</span>
|
|
74
|
+
</template>
|
|
75
|
+
</button>
|
|
76
|
+
</h5>
|
|
77
|
+
</div>
|
|
78
|
+
<!-- CV -->
|
|
39
79
|
<!-- SOBRE -->
|
|
40
80
|
<div class="about content-block mt-5 ml-3 mr-3">
|
|
41
81
|
<h5 class="font-weight-bold">Sobre</h5>
|
|
@@ -198,6 +238,8 @@ import getPrefixes from '~/util/getPrefixes.js';
|
|
|
198
238
|
import { mask } from 'vue-the-mask';
|
|
199
239
|
import { Dropdown, DropdownMenu, DropdownItem } from 'element-ui';
|
|
200
240
|
|
|
241
|
+
import swal from 'sweetalert2';
|
|
242
|
+
|
|
201
243
|
export default {
|
|
202
244
|
name: 'user-cv-middle',
|
|
203
245
|
directives: { mask },
|
|
@@ -262,7 +304,8 @@ export default {
|
|
|
262
304
|
isLocked: !this.companyHasProduct(
|
|
263
305
|
this.$store.state.loja && this.$store.state.loja.showableProducts && this.$store.state.loja.showableProducts['INTERACAO_USUARIO'] || false
|
|
264
306
|
),
|
|
265
|
-
unlockedButtons: ['share', 'moveTo']
|
|
307
|
+
unlockedButtons: ['share', 'moveTo'],
|
|
308
|
+
isCvDownloading: false
|
|
266
309
|
};
|
|
267
310
|
},
|
|
268
311
|
mounted() {
|
|
@@ -296,6 +339,45 @@ export default {
|
|
|
296
339
|
}
|
|
297
340
|
},
|
|
298
341
|
methods: {
|
|
342
|
+
showMessage(message, type = 'success') {
|
|
343
|
+
const Toast = swal.mixin({
|
|
344
|
+
toast: true,
|
|
345
|
+
position: 'top-end',
|
|
346
|
+
showConfirmButton: false,
|
|
347
|
+
timer: 3000,
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
return Toast.fire({
|
|
351
|
+
type: type,
|
|
352
|
+
title: message,
|
|
353
|
+
});
|
|
354
|
+
},
|
|
355
|
+
async handleDownloadCv(data) {
|
|
356
|
+
this.isCvDownloading = true;
|
|
357
|
+
|
|
358
|
+
const response = await this.$axios.get(data.annex, {
|
|
359
|
+
responseType: 'blob'
|
|
360
|
+
})
|
|
361
|
+
.then(res => URL.createObjectURL(res.data))
|
|
362
|
+
.catch(err => {
|
|
363
|
+
return {
|
|
364
|
+
error: true,
|
|
365
|
+
message: (err && err.response && err.response.data && err.response.data.message) || 'Falha ao baixar arquivo'
|
|
366
|
+
};
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
this.isCvDownloading = false;
|
|
370
|
+
|
|
371
|
+
if (response.error) {
|
|
372
|
+
this.showMessage(response.message, 'error');
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
const link = document.createElement('a');
|
|
377
|
+
link.href = response;
|
|
378
|
+
link.download = `${data.user_id}.pdf`;
|
|
379
|
+
link.click();
|
|
380
|
+
},
|
|
299
381
|
phoneMask(v) {
|
|
300
382
|
|
|
301
383
|
let r = v.replace(/\D/g, '');
|
|
@@ -467,6 +549,46 @@ export default {
|
|
|
467
549
|
<style lang="scss" scoped>
|
|
468
550
|
@import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
|
|
469
551
|
|
|
552
|
+
.cv__box {
|
|
553
|
+
cursor: pointer;
|
|
554
|
+
margin: 0;
|
|
555
|
+
border: 0;
|
|
556
|
+
width: 100%;
|
|
557
|
+
display: flex;
|
|
558
|
+
align-items: center;
|
|
559
|
+
justify-content: center;
|
|
560
|
+
gap: 1rem;
|
|
561
|
+
background: rgba(#5865f2, 0.2);
|
|
562
|
+
color: #5865F2;
|
|
563
|
+
font-size: 1rem;
|
|
564
|
+
padding: 1.25rem 1rem;
|
|
565
|
+
border-radius: 0.25rem;
|
|
566
|
+
transition: background-color 0.25s, color 0.25s;
|
|
567
|
+
|
|
568
|
+
&:hover:not(:disabled) {
|
|
569
|
+
background: rgba(#5865f2, 0.3);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
&:disabled {
|
|
573
|
+
cursor: not-allowed !important;
|
|
574
|
+
background: #f5f5f5;
|
|
575
|
+
color: #c8c8c8;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
@keyframes spinner {
|
|
579
|
+
from {
|
|
580
|
+
transform: rotate(0);
|
|
581
|
+
}
|
|
582
|
+
to {
|
|
583
|
+
transform: rotate(360deg);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
.spin {
|
|
588
|
+
animation: spinner 0.75s infinite linear;
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
|
|
470
592
|
/deep/ .dropdown__content {
|
|
471
593
|
&, .title__content {
|
|
472
594
|
width: 100%;
|
|
@@ -1,90 +1,90 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="input__container__icon" :class="{ 'input__disabled': disabled || isLocked }" @click="isLocked && $emit('open-plan-modal')">
|
|
3
|
-
<label for="search">
|
|
4
|
-
<template v-if="!isLocked">
|
|
5
|
-
<i class="fas fa-search"></i>
|
|
6
|
-
</template>
|
|
7
|
-
<template v-else>
|
|
8
|
-
<i class="fas fa-lock"></i>
|
|
9
|
-
</template>
|
|
10
|
-
</label>
|
|
11
|
-
<input type="text" name="search" id="search" :disabled="disabled || isLocked" :placeholder="placeholder" v-model="searchModel" @change="$emit('change')">
|
|
12
|
-
</div>
|
|
13
|
-
</template>
|
|
14
|
-
|
|
15
|
-
<script>
|
|
16
|
-
export default {
|
|
17
|
-
name: 'search-input',
|
|
18
|
-
props: {
|
|
19
|
-
disabled: {
|
|
20
|
-
type: Boolean,
|
|
21
|
-
default: false
|
|
22
|
-
},
|
|
23
|
-
search: String,
|
|
24
|
-
placeholder: {
|
|
25
|
-
type: String,
|
|
26
|
-
default: 'Busque por vaga'
|
|
27
|
-
},
|
|
28
|
-
isLocked: {
|
|
29
|
-
type: Boolean,
|
|
30
|
-
default: false
|
|
31
|
-
},
|
|
32
|
-
value: {
|
|
33
|
-
type: String,
|
|
34
|
-
default: ''
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
computed: {
|
|
38
|
-
searchModel: {
|
|
39
|
-
get() {
|
|
40
|
-
return this.value || this.search;
|
|
41
|
-
},
|
|
42
|
-
set(value) {
|
|
43
|
-
this.$emit('search', value);
|
|
44
|
-
this.$emit('input', value);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
mounted() {
|
|
49
|
-
this.searchModel = this.search;
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
</script>
|
|
53
|
-
|
|
54
|
-
<style lang="scss" scoped>
|
|
55
|
-
.input__container__icon {
|
|
56
|
-
position: relative;
|
|
57
|
-
display: flex;
|
|
58
|
-
align-items: center;
|
|
59
|
-
border-radius: 100px;
|
|
60
|
-
max-width: 270px;
|
|
61
|
-
overflow: hidden;
|
|
62
|
-
border: 1px solid #E9ECEF;
|
|
63
|
-
input {
|
|
64
|
-
background: transparent;
|
|
65
|
-
border: 0;
|
|
66
|
-
outline: none;
|
|
67
|
-
padding: 5px 0;
|
|
68
|
-
width: 100%;
|
|
69
|
-
}
|
|
70
|
-
label {
|
|
71
|
-
margin: 0;
|
|
72
|
-
display: block;
|
|
73
|
-
}
|
|
74
|
-
i {
|
|
75
|
-
padding: 0 10px;
|
|
76
|
-
color: #AEB6BE;
|
|
77
|
-
}
|
|
78
|
-
&.input__disabled {
|
|
79
|
-
background-color: #E9ECEF;
|
|
80
|
-
cursor: not-allowed !important;
|
|
81
|
-
input {
|
|
82
|
-
color: #AEB6BE !important;
|
|
83
|
-
cursor: not-allowed !important;
|
|
84
|
-
}
|
|
85
|
-
label {
|
|
86
|
-
cursor: not-allowed !important;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="input__container__icon" :class="{ 'input__disabled': disabled || isLocked }" @click="isLocked && $emit('open-plan-modal')">
|
|
3
|
+
<label for="search">
|
|
4
|
+
<template v-if="!isLocked">
|
|
5
|
+
<i class="fas fa-search"></i>
|
|
6
|
+
</template>
|
|
7
|
+
<template v-else>
|
|
8
|
+
<i class="fas fa-lock"></i>
|
|
9
|
+
</template>
|
|
10
|
+
</label>
|
|
11
|
+
<input type="text" name="search" id="search" :disabled="disabled || isLocked" :placeholder="placeholder" v-model="searchModel" @change="$emit('change')">
|
|
12
|
+
</div>
|
|
13
|
+
</template>
|
|
14
|
+
|
|
15
|
+
<script>
|
|
16
|
+
export default {
|
|
17
|
+
name: 'search-input',
|
|
18
|
+
props: {
|
|
19
|
+
disabled: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: false
|
|
22
|
+
},
|
|
23
|
+
search: String,
|
|
24
|
+
placeholder: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: 'Busque por vaga'
|
|
27
|
+
},
|
|
28
|
+
isLocked: {
|
|
29
|
+
type: Boolean,
|
|
30
|
+
default: false
|
|
31
|
+
},
|
|
32
|
+
value: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: ''
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
computed: {
|
|
38
|
+
searchModel: {
|
|
39
|
+
get() {
|
|
40
|
+
return this.value || this.search;
|
|
41
|
+
},
|
|
42
|
+
set(value) {
|
|
43
|
+
this.$emit('search', value);
|
|
44
|
+
this.$emit('input', value);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
mounted() {
|
|
49
|
+
this.searchModel = this.search;
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<style lang="scss" scoped>
|
|
55
|
+
.input__container__icon {
|
|
56
|
+
position: relative;
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
border-radius: 100px;
|
|
60
|
+
max-width: 270px;
|
|
61
|
+
overflow: hidden;
|
|
62
|
+
border: 1px solid #E9ECEF;
|
|
63
|
+
input {
|
|
64
|
+
background: transparent;
|
|
65
|
+
border: 0;
|
|
66
|
+
outline: none;
|
|
67
|
+
padding: 5px 0;
|
|
68
|
+
width: 100%;
|
|
69
|
+
}
|
|
70
|
+
label {
|
|
71
|
+
margin: 0;
|
|
72
|
+
display: block;
|
|
73
|
+
}
|
|
74
|
+
i {
|
|
75
|
+
padding: 0 10px;
|
|
76
|
+
color: #AEB6BE;
|
|
77
|
+
}
|
|
78
|
+
&.input__disabled {
|
|
79
|
+
background-color: #E9ECEF;
|
|
80
|
+
cursor: not-allowed !important;
|
|
81
|
+
input {
|
|
82
|
+
color: #AEB6BE !important;
|
|
83
|
+
cursor: not-allowed !important;
|
|
84
|
+
}
|
|
85
|
+
label {
|
|
86
|
+
cursor: not-allowed !important;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
</style>
|