@burh/nuxt-core 1.1.19 → 1.1.20

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.
@@ -1,1333 +1,1333 @@
1
- <template>
2
- <div class="bg-white content-right tabs">
3
- <el-tabs
4
- :class="activeTab"
5
- class="mt-3 handle-icon-color"
6
- v-model="activeTab"
7
- >
8
- <el-tab-pane
9
- v-if="hasMatch || (companyHasAutomation && hasAutomation)"
10
- name="melissa"
11
- class="mx-2"
12
- >
13
-
14
- <div v-if="matchReason" class="match_reason">
15
- <h1>🪄 Insight IA</h1>
16
- <p>{{ matchReason }}</p>
17
- </div>
18
-
19
- <span class="tab__icon-pane" slot="label">
20
- <img
21
- class="img__icon-pane"
22
- src="/img/recruitment/melissa.svg"
23
- />
24
- </span>
25
-
26
- <p v-if="!matchReason" class="notes-title mb-0 notes-melissa-title">
27
- {{automation.aproved ?
28
- 'Candidato aprovado pela Melissa' :
29
- 'Candidato reprovado pela Melissa'}}
30
- </p>
31
- <div class="line mb-3"></div>
32
- <template>
33
- <template>
34
- <div v-if="automation && automation.vehicle_license && automation.vehicle_license.vehicle_license !== null">
35
- <div class="notes-baloon-melissa mt-2">
36
- <div class="question-melissa-title">
37
- <span>
38
- Você tem uma carteira de motorista válida?
39
- </span>
40
- </div>
41
- <div class="notes-text-melissa pt-2">
42
- <span class="mt-2">
43
- {{ Boolean(automation.vehicle_license.vehicle_license) ? "Sim" : "Não" }}
44
- <span v-if="automation.vehicle_license.vehicle_license_approved">
45
- &#x2705;
46
- </span>
47
- <span v-else>
48
- &#x274C;
49
- </span>
50
- </span>
51
- </div>
52
- </div>
53
- </div>
54
- <div v-if="automation && automation.city && automation.city.city !== null">
55
- <div class="notes-baloon-melissa mt-2">
56
- <div class="question-melissa-title">
57
- <span>
58
- Você pode se locomover até onde esta vaga está localizada?
59
- </span>
60
- </div>
61
- <div class="notes-text-melissa pt-2">
62
- <span class="mt-2">
63
- {{ Boolean(automation.city.city) ? "Sim" : "Não" }}
64
- <span v-if="automation.city.city_approved">
65
- &#x2705;
66
- </span>
67
- <span v-else>
68
- &#x274C;
69
- </span>
70
- </span>
71
- </div>
72
- </div>
73
- </div>
74
- <div v-if="automation && automation.urgent_hiring && automation.urgent_hiring.urgent_hiring !== null">
75
- <div class="notes-baloon-melissa mt-2">
76
- <div class="question-melissa-title">
77
- <span>
78
- Precisamos preencher esta posição com urgência. Você poderia começar imediatamente?
79
- </span>
80
- </div>
81
- <div class="notes-text-melissa pt-2">
82
- <span class="mt-2">
83
- {{ Boolean(automation.urgent_hiring.urgent_hiring) ? "Sim" : "Não" }}
84
- <span v-if="automation.urgent_hiring.urgent_hiring_approved">
85
- &#x2705;
86
- </span>
87
- <span v-else>
88
- &#x274C;
89
- </span>
90
- </span>
91
- </div>
92
- </div>
93
- </div>
94
- <div v-if="automation && automation.school_formation && automation.school_formation.school_formation !== null && automation.school_formation.option !== null">
95
- <div class="notes-baloon-melissa mt-2">
96
- <div class="question-melissa-title">
97
- <span>
98
- Você completou o curso: <b>{{automation.school_formation.option}}</b>?
99
- </span>
100
- </div>
101
- <div class="notes-text-melissa pt-2">
102
- <span class="mt-2">
103
- {{ Boolean(automation.school_formation.school_formation) ? "Sim" : "Não" }}
104
-
105
- <span v-if="automation.school_formation.school_formation_approved">
106
- &#x2705;
107
- </span>
108
- <span v-else>
109
- &#x274C;
110
- </span>
111
- </span>
112
- </div>
113
- </div>
114
- </div>
115
- <div v-if="automation && automation.tool_experience && automation.tool_experience.tool_experience !== null && automation.tool_experience.option !== null">
116
- <div class="notes-baloon-melissa mt-2">
117
- <div class="question-melissa-title">
118
- <span>
119
- Quantos anos de experiência você tem utilizando <b>{{automation.tool_experience.option}}</b>?
120
- </span>
121
- </div>
122
- <div class="notes-text-melissa pt-2">
123
- <span class="mt-2">
124
- {{ automation.tool_experience.tool_experience }}
125
- <span v-if="automation.tool_experience.tool_experience_approved">
126
- &#x2705;
127
- </span>
128
- <span v-else>
129
- &#x274C;
130
- </span>
131
- </span>
132
- </div>
133
- </div>
134
- </div>
135
- <div v-if="automation && automation.work_experience && automation.work_experience.work_experience !== null && automation.work_experience.option !== null">
136
- <div class="notes-baloon-melissa mt-2">
137
- <div class="question-melissa-title">
138
- <span>
139
- Quantos anos de experiência você tem na função de <b>{{automation.work_experience.option}}</b>?
140
- </span>
141
- </div>
142
- <div class="notes-text-melissa pt-2">
143
- <span class="mt-2">
144
- {{ automation.work_experience.work_experience }}
145
- <span v-if="automation.work_experience.work_experience_approved">
146
- &#x2705;
147
- </span>
148
- <span v-else>
149
- &#x274C;
150
- </span>
151
- </span>
152
- </div>
153
- </div>
154
- </div>
155
- <div v-if="automation && automation.sector_experience && automation.sector_experience.sector_experience !== null && automation.sector_experience.option !== null">
156
- <div class="notes-baloon-melissa mt-2">
157
- <div class="question-melissa-title">
158
- <span>
159
- Quantos anos de experiência você tem no setor de <b>{{automation.sector_experience.option}}</b>?
160
- </span>
161
- </div>
162
- <div class="notes-text-melissa pt-2">
163
- <span class="mt-2">
164
- {{ automation.sector_experience.sector_experience }}
165
- <span v-if="automation.sector_experience.sector_experience_approved">
166
- &#x2705;
167
- </span>
168
- <span v-else>
169
- &#x274C;
170
- </span>
171
- </span>
172
- </div>
173
- </div>
174
- </div>
175
- <div v-if="automation && automation.language && automation.language.language !== null && automation.language.option !== null">
176
- <div class="notes-baloon-melissa mt-2">
177
- <div class="question-melissa-title">
178
- <span>
179
- Qual seu nível de proficiência em <b>{{automation.language.option}}</b>?
180
- </span>
181
- </div>
182
- <div class="notes-text-melissa pt-2">
183
- <span class="mt-2">
184
- {{ automation.language.language }}
185
- <span v-if="automation.language.language_approved">
186
- &#x2705;
187
- </span>
188
- <span v-else>
189
- &#x274C;
190
- </span>
191
- </span>
192
- </div>
193
- </div>
194
- </div>
195
- <div
196
- v-for="(melissa,index) in automation.custom"
197
- :key="index"
198
- >
199
- <div class="notes-baloon-melissa mt-2">
200
- <div class="question-melissa-title">
201
- <span>{{ melissa.question }}</span>
202
- </div>
203
- <div class="notes-text-melissa pt-2">
204
- <span class="mt-2">
205
- {{ typeof melissa.response === "boolean" ? melissa.response ? "Sim" : "Não" : melissa.response }}
206
- <span v-if="melissa.approved_in_question">
207
- &#x2705;
208
- </span>
209
- <span v-else>
210
- &#x274C;
211
- </span>
212
- </span>
213
- </div>
214
- </div>
215
- </div>
216
- </template>
217
- </template>
218
- </el-tab-pane>
219
- <el-tab-pane class="history ml-2" name="history">
220
- <span class="tab__icon-pane" slot="label">
221
- <img
222
- class="img__icon-pane img__icon--history"
223
- src="../../../../assets/images/icons/historicCv.svg"
224
- />
225
- </span>
226
- <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
227
-
228
- <p class="notes-title mb-0">Histórico com sua empresa</p>
229
- <div class="line mb-3"></div>
230
-
231
- <template v-if="!isLocked">
232
- <div
233
- class="mt-3"
234
- v-for="(item, index) in orderByDate(companyHistory())"
235
- :key="index"
236
- >
237
- <div class="d-flex align-items-center justify-content-between">
238
- <p class="history-text mb-0" v-html="item.text" />
239
-
240
- <el-tooltip
241
- placement="top"
242
- content="Baixar PDF"
243
- >
244
- <button
245
- v-if="item.hasDownload"
246
- class="py-2 px-3 mx-2 border-0 bg-transparent text-primary"
247
- @click="() => downloadPdf(item)"
248
- >
249
- <i class="fas fa-download" />
250
- </button>
251
- </el-tooltip>
252
- </div>
253
-
254
- <span>{{ item.date | convertDate }}</span>
255
- </div>
256
- <p v-if="companyHistory().length === 0" class="history-text">
257
- Histórico vazio.
258
- </p>
259
- </template>
260
- </el-tab-pane>
261
-
262
- <el-tab-pane name="notes" class="ml-2" v-if="isNotesActived">
263
- <span class="tab__icon-pane" slot="label">
264
- <img
265
- class="img__icon-pane img__icon--notes"
266
- src="../../../../assets/images/icons/notesCv.svg"
267
- />
268
- </span>
269
-
270
- <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
271
-
272
- <p class="notes-title mb-0">Notas da equipe</p>
273
- <div class="line mb-3"></div>
274
-
275
- <template v-if="!isLocked">
276
- <template v-if="notes.length > 0">
277
- <div
278
- v-for="(note, index) in notes.slice(0, 5)"
279
- :key="index"
280
- >
281
- <div class="notes-baloon">
282
- <div class="notes-text ml-3 pt-1">
283
- <p class="mt-3">{{ note.text }}</p>
284
- </div>
285
- <div
286
- class="d-flex justify-content-between align-items-center mx-3"
287
- >
288
- <p @click.prevent="handleRemoveNote(note)" v-if="String(currentUser.id) === String(note.user_id)" class="notes-date remove-baloon">
289
- Excluir
290
- </p>
291
- <div v-else></div>
292
-
293
- <p class="notes-date">
294
- {{ note.created_at | convertDate }}
295
- </p>
296
- </div>
297
- </div>
298
- <div class="notes-owner d-flex mt-2">
299
- <image-with-fallback
300
- :src="note.user.urlAvatar"
301
- :alt="note.user.name"
302
- :fallbackText="note.user.name"
303
- />
304
- <p class="ml-1">
305
- {{ note.user.name }}
306
- </p>
307
- </div>
308
- </div>
309
- </template>
310
- <div class="notes-text" v-if="notes.length === 0">
311
- <p>Nenhuma nota criada.</p>
312
- </div>
313
- </template>
314
-
315
- <div class="input-container" v-if="!isLocked">
316
- <input
317
- class="notes-new pl-4 mt-3 mb-3 form-rounded"
318
- type="text"
319
- placeholder="Escrever anotação"
320
- v-model="newNote"
321
- @change="$emit('new-note', newNote, userData.id)"
322
- v-on:change="cleatInput()"
323
- />
324
- <i
325
- @click="
326
- newNote.length > 0 &&
327
- $emit('new-note', newNote, userData.id)
328
- "
329
- class="fas fa-paper-plane input-icon"
330
- ></i>
331
- </div>
332
- </el-tab-pane>
333
-
334
- <el-tab-pane name="documents" class="ml-2">
335
- <span class="tab__icon-pane" slot="label">
336
- <img
337
- class="img__icon-pane img__icon--documents"
338
- src="../../../../assets/images/icons/icon3.svg"
339
- />
340
- </span>
341
-
342
- <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
343
-
344
- <p class="notes-title mb-0">Documentos anexados</p>
345
- <div class="line mb-3"></div>
346
-
347
- <template v-if="!isLocked">
348
- <div class="archive-content">
349
- <div v-for="(item, index) in archives" :key="index">
350
- <div @click="openArchive(item)" class="archive-container">
351
- <div>
352
- <img class="archive-img" src="../../../../assets/images/icons/icon3.svg" >
353
- </div>
354
- <div class="archive-name">
355
- <span>{{item.name}}</span>
356
- <div class="archive-icon">
357
- <i @click.stop.prevent="openRemoveSection(item, (index+1))" class="far fa-trash-alt"></i>
358
- </div>
359
- </div>
360
- </div>
361
- <div v-if="hasRemove && hasRemove == (index+1)" class="archive-remove">
362
- <p>Você tem certeza que deseja apagar este arquivo?</p>
363
- <div class="d-flex">
364
- <base-button
365
- @click="removeArchive(currentRemoveItem, index)"
366
- size="sm"
367
- class="btn-outline-primary col-6 p-1"
368
- >
369
- Apagar
370
- </base-button>
371
- <base-button
372
- @click="hasRemove = false"
373
- size="sm"
374
- class="btn-outline-danger col-6 p-1"
375
- >
376
- Cancelar
377
- </base-button>
378
- </div>
379
- </div>
380
- </div>
381
- </div>
382
-
383
- <div class="notes-text" v-if="archives == null">
384
- <p>Nenhum arquvio anexado.</p>
385
- </div>
386
- </template>
387
-
388
- <div class="input-container" v-if="!isLocked">
389
- <div class="mt-5">
390
- <dropzone-file-upload
391
- disabled
392
- @error="showMessageError"
393
- ref="MyDropzone"
394
- :options="dropzoneOptions"
395
- v-model="fileToUpload"
396
- />
397
- </div>
398
-
399
- <div class="archive-buttons">
400
- <base-button @click="saveImage" size="sm" class="btn-outline-primary btn-rounded col-12">Salvar</base-button>
401
- </div>
402
- </div>
403
- </el-tab-pane>
404
-
405
- <el-tab-pane name="reports" class="ml-2" v-if="isReportsActived">
406
- <span class="tab__icon-pane" slot="label">
407
- <img
408
- class="img__icon-pane img__icon--reports"
409
- src="../../../../assets/images/icons/icon5.svg"
410
- />
411
- </span>
412
-
413
- <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
414
-
415
- <p class="notes-title mb-0">Laudo do Candidato</p>
416
- <div class="line mb-3"></div>
417
- <div class="evaluation-area" v-if="likeStatus">
418
- <div class="action">
419
- <like class="icon" :colorActiveLike="likeStatus"/>
420
- <span class="font-weight-bold evaluation-area__text">
421
- Gostei
422
- </span>
423
- </div>
424
- <div class="action">
425
- <deslike class="icon" :colorActiveDeslike="likeStatus"/>
426
- <span class="font-weight-bold evaluation-area__text">
427
- Não Gostei
428
- </span>
429
- </div>
430
- </div>
431
- <template v-if="!isLocked">
432
- <div class="input-container" v-if="!userReportData.annex">
433
- <dropzone-file-upload
434
- disabled
435
- ref="MyReportDropzone"
436
- v-model="reportFileUpload"
437
- :options="reportsDropdownzoneOptions"
438
- @error="showMessageError"
439
- />
440
-
441
- <div class="archive-buttons" v-if="reportFileUpload.length > 0">
442
- <base-button @click="saveReport" size="sm" class="btn-outline-primary btn-rounded col-12">Salvar</base-button>
443
- </div>
444
- </div>
445
-
446
- <div class="archive-content" v-else-if="userReportData.annex">
447
- <div @click="openArchive(userReportData.annex)" class="archive-container">
448
- <div>
449
- <img class="archive-img" src="../../../../assets/images/icons/icon6.svg" >
450
- </div>
451
- <div class="archive-name">
452
- <span>{{ userReportData.annex.name }}</span>
453
- <div class="archive-icon">
454
- <i @click.stop.prevent="openReportRemoveSection(userReportData.annex)" class="far fa-trash-alt"></i>
455
- </div>
456
- </div>
457
- </div>
458
- <div v-if="hasReportRemove" class="archive-remove">
459
- <p>Você tem certeza que deseja apagar este arquivo?</p>
460
- <div class="d-flex">
461
- <base-button
462
- @click="removeReportArchive(currentRemoveItem)"
463
- size="sm"
464
- class="btn-outline-primary col-6 p-1"
465
- >
466
- Apagar
467
- </base-button>
468
- <base-button
469
- @click="hasRemove = false"
470
- size="sm"
471
- class="btn-outline-danger col-6 p-1"
472
- >
473
- Cancelar
474
- </base-button>
475
- </div>
476
- </div>
477
- </div>
478
- </template>
479
-
480
- <p class="notes-title mb-0">Comentários Recrutador</p>
481
- <div class="line mb-3"></div>
482
-
483
- <template v-if="!isLocked">
484
- <div v-if="userReportData.comments && userReportData.comments.length > 0">
485
- <note-baloon
486
- v-for="comment in userReportData.comments"
487
- :key="comment.id"
488
- :comment="comment"
489
- @remove-comment="removeComment"
490
- />
491
- </div>
492
- </template>
493
-
494
- <div class="input-container" v-if="!isLocked">
495
- <input
496
- class="notes-new pl-4 mt-3 mb-3 form-rounded"
497
- type="text"
498
- placeholder="Escrever anotação"
499
- v-model="newReportNote"
500
- @change="handleNewReportNoteSubmit"
501
- v-on:change="cleatInput()"
502
- />
503
- <i
504
- @click="handleNewReportNoteSubmit"
505
- class="fas fa-paper-plane input-icon"
506
- ></i>
507
- </div>
508
- </el-tab-pane>
509
-
510
- <el-tab-pane name="dados-da-folha" class="ml-2" v-if="isSheetActived">
511
- <span class="tab__icon-pane" slot="label">
512
- <img
513
- class="img__icon-pane img__icon--reports"
514
- src="../../../../assets/images/icons/icon9.svg"
515
- />
516
- </span>
517
-
518
- <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
519
-
520
- <p class="notes-title mb-0">Dados da Folha</p>
521
-
522
- <ul class="sheet-list">
523
- <li>Unidade: <span>{{ sheet.name_branch }}</span></li>
524
- <li>Salário: <span>{{ sheet.sallary || '-' }}</span></li>
525
- <li>Departamento: <span>{{ sheet.nane_department || '-' }}</span></li>
526
- <li>Gestor Direto: <span>{{ sheet.manager_immediate || '-' }}</span></li>
527
- <li>Data de Admissão: <span>{{ sheet.entry_date || '-' }}</span></li>
528
- <li>Cargo: <span>{{ sheet.job_title_name || '-' }}</span></li>
529
- <li>Matrícula: <span>{{ sheet.enrolment || '-' }}</span></li>
530
- </ul>
531
- </el-tab-pane>
532
- </el-tabs>
533
- </div>
534
- </template>
535
-
536
- <script>
537
- import { Tabs, TabPane } from 'element-ui';
538
- import DropzoneFileUpload from '@burh/nuxt-core/components/argon-core/Inputs/DropzoneFileUpload.vue';
539
- import swal from 'sweetalert2';
540
- import UpgradePlan from './UpgradePlan.vue';
541
- import like from '../../../organismos/atomos/Like.vue';
542
- import deslike from '../../../organismos/atomos/Deslike.vue';
543
- import NoteBaloon from './CvRight/NoteBaloon.vue';
544
-
545
- export default {
546
- name: 'user-cv-right-side',
547
- filters: {
548
- convertDate(data) {
549
- if (typeof data !== 'string') {
550
- data = '2020-01-01 12:00:00';
551
- }
552
- let d = new Date(data);
553
- let options = { hour: '2-digit', minute: '2-digit' };
554
- return d.toLocaleDateString('pt-BR', options);
555
- }
556
- },
557
- watch:{
558
- fileToUpload(value){
559
- if(value.length > 0 && value[0].accepted) {
560
- this.isError = false;
561
- }
562
- },
563
- reportFileUpload(value){
564
- if(value.length > 0 && value[0].accepted) {
565
- this.isError = false;
566
- }
567
- },
568
- archives() {
569
- this.getUserFolderData();
570
- }
571
- },
572
- components: {
573
- [Tabs.name]: Tabs,
574
- [TabPane.name]: TabPane,
575
- DropzoneFileUpload,
576
- UpgradePlan,
577
- like,
578
- deslike,
579
- NoteBaloon
580
- },
581
- data(){
582
- return {
583
- newNote: '',
584
- newReportNote: '',
585
- liked: 0,
586
- hasRemove: null,
587
- isError: true,
588
- currentRemoveItem: null,
589
- fileToUpload: [],
590
- dropzoneOptions: {
591
- maxFilesize: 5,
592
- dictFileTooBig:'Seu arquivo é poderoso demais (Máximo 5mb).',
593
- dictDefaultMessage: 'Clique ou arraste seu arquivo aqui.',
594
- dictInvalidFileType: 'Arquivo invalido.',
595
- dictMaxFilesExceeded: 'Não é permitido mais de um arquivo por vez.',
596
- acceptedFiles: 'image/*, application/pdf',
597
- },
598
- reportFileUpload: [],
599
- reportsDropdownzoneOptions: {
600
- maxFilesize: 1,
601
- dictFileTooBig:'Seu arquivo é poderoso demais (Máximo 5mb).',
602
- dictDefaultMessage: 'Clique ou arraste seu arquivo aqui.',
603
- dictInvalidFileType: 'Arquivo invalido.',
604
- dictMaxFilesExceeded: 'Não é permitido mais de um arquivo por vez.',
605
- acceptedFiles: 'image/*, application/pdf',
606
- },
607
- userReportData: [],
608
- hasReportRemove: false,
609
- hasCommentRemove: false,
610
- sheet: null,
611
- isSheetActived: false,
612
- };
613
- },
614
- props: {
615
- archives: Array,
616
- userData: Object,
617
- automation:{
618
- type:Object || null,
619
- default:null
620
- },
621
- notes: Array,
622
- activeName: String,
623
- jobId:{
624
- type:[String, Number, Object],
625
- default:null
626
- },
627
- userFolderId: String,
628
- isNotesActived: {
629
- type: Boolean,
630
- default: true
631
- },
632
- isReportsActived: {
633
- type: Boolean,
634
- default: false
635
- },
636
- hasMatch: {
637
- type: Boolean,
638
- default: false
639
- },
640
- matchReason: {
641
- type: String,
642
- default: ''
643
- }
644
- },
645
- mounted() {
646
- this.companyHistory();
647
- this.getUserFolderData();
648
- this.getSheetData();
649
- },
650
- methods: {
651
- async handleRemoveNote(note) {
652
- const apiUrl = `${process.env.baseApiUrl}/company/${note.company_id}/user/${note.user_id}/note/${note.id}`;
653
-
654
- const response = await this.$axios.delete(apiUrl)
655
- .then(res => res.data)
656
- .catch(() => {});
657
-
658
- if (!response || response && response.error) return this.showToast('error', 'Falha ao remover!');
659
-
660
- this.notes = this.notes.filter(n => n.id !== note.id);
661
- },
662
- removeComment(commentId){
663
- this.userReportData.comments = this.userReportData.comments.filter(comment => comment.id != commentId);
664
- this.$emit('remove-comment', commentId);
665
- },
666
- handleNewReportNoteSubmit() {
667
- if (this.newReportNote.length > 3) {
668
- this.$emit('new-report-note', this.newReportNote, this.userFolderId, this.userData.id);
669
- this.newReportNote = '';
670
- }
671
- },
672
- openRemoveSection(item, index) {
673
- this.hasRemove = index;
674
- this.currentRemoveItem = item;
675
- },
676
- openReportRemoveSection(item) {
677
- this.hasReportRemove = true;
678
- this.currentRemoveItem = item;
679
- },
680
-
681
- showToast(type, title){
682
- const Toast = swal.mixin({
683
- toast: true,
684
- position: 'top-end',
685
- showConfirmButton: false,
686
- timer: 3100,
687
- });
688
-
689
- return Toast.fire({
690
- type: type,
691
- title: title
692
- });
693
- },
694
-
695
- showMessageError(file, message) {
696
- this.isError = true;
697
- this.$refs.Mydropzone && this.$refs.Mydropzone.removeAllFiles();
698
-
699
- if (file.status !== 'canceled'){
700
- this.showToast('error', message);
701
- }
702
- },
703
- openArchive(item) {
704
- window.open(item.storage_url, '_blank');
705
- },
706
- saveImage(){
707
- if (!this.isError) {
708
- this.$emit('save-archive', this.fileToUpload[0], this.userData.id);
709
- this.$refs.MyDropzone && this.$refs.MyDropzone.removeAllFiles();
710
- this.showToast('success', 'Arquivo enviado com sucesso.');
711
- } else {
712
- if (this.fileToUpload.length > 0) {
713
- this.showToast('error', 'Arquivo invalido.');
714
- } else {
715
- this.showToast('warning', 'Selecione um arquivo.');
716
- }
717
- }
718
- },
719
- saveReport() {
720
- if (!this.isError) {
721
- this.$emit('save-report', this.reportFileUpload[0], this.userFolderId);
722
- this.$refs.MyReportDropzone && this.$refs.MyReportDropzone.removeAllFiles();
723
- this.showToast('success', 'Arquivo enviado com sucesso.');
724
-
725
- } else {
726
- if (this.reportFileUpload.length > 0) {
727
- this.showToast('error', 'Arquivo invalido.');
728
- } else {
729
- this.showToast('warning', 'Selecione um arquivo.');
730
- }
731
- }
732
- },
733
-
734
- removeArchive(archive, index){
735
- this.$emit('remove-archive', archive.user_id, archive.id, archive.company_id, index);
736
- this.hasRemove = null;
737
- },
738
-
739
- removeReportArchive(archive) {
740
- this.userReportData.annex = undefined;
741
-
742
- this.$emit('remove-report', archive.id);
743
- this.hasReportRemove = false;
744
- },
745
-
746
- cleatInput() {
747
- this.newNote = '';
748
- },
749
- async downloadPdf(param) {
750
- let data = await this.$store.app.$services.testOnline.downloadPdf(
751
- param.id
752
- );
753
-
754
- const url = window.URL.createObjectURL(data.data);
755
- const link = document.createElement('a');
756
- link.href = url;
757
- link.setAttribute(
758
- 'download',
759
- `${param.user.name}-${param.test.name}.pdf`
760
- );
761
- document.body.appendChild(link);
762
- link.click();
763
- link.remove();
764
- window.URL.revokeObjectURL(url);
765
- },
766
- getTestHistory() {
767
- const tests = this.userData.tests.map(test => {
768
- if (!test.finished_at) {
769
- return;
770
- }
771
-
772
- const testData = {
773
- avarage: test.avarage,
774
- date: test.finished_at,
775
- text: `Finalizou o teste ${test.test.name.toUpperCase()} com nota <b>${test.avarage}</b>`
776
- };
777
-
778
- return testData;
779
- }).filter(item => item);
780
-
781
- return tests;
782
- },
783
- companyHistory() {
784
- let history = [];
785
-
786
- let jobs = this.userData.user_applied_job.map(job => {
787
- return {
788
- id: job.id,
789
- date: job.subscribe_at,
790
- user: {
791
- name: this.userData.name
792
- },
793
- job: {
794
- name: job.job.title
795
- },
796
- text: `Se inscreveu na vaga ${job.job.title}`
797
- };
798
- });
799
-
800
- let tests = this.userData.tests.map(x => {
801
- let test = {
802
- id: x.id,
803
- date: x.finished_at || x.created_at,
804
- user: {
805
- name: this.userData.name
806
- },
807
- test: {
808
- name: x.test.name
809
- }
810
- };
811
-
812
- if (x.finished_at) {
813
- test.text = `Finalizou o teste ${x.test.name.toUpperCase()} com nota <b>${x.avarage}</b>`;
814
- test.hasDownload = true;
815
- } else {
816
- test.text = `Recebeu o teste ${x.test.name.toUpperCase()}`;
817
- }
818
-
819
- return test;
820
- });
821
-
822
- let courses = this.userData.courses_user.map(x => {
823
- if (x.finished_at) {
824
- return{
825
- date: x.finished_at,
826
- text: `Finalizou o curso ${x.course.name.toUpperCase()}`
827
- };
828
- }
829
- });
830
-
831
- let discs = this.userData.solides.map(x => ({
832
- date: x.end,
833
- text: 'Realizou um teste DISC'
834
- }));
835
-
836
- history = history.concat(jobs, tests, discs, courses);
837
-
838
- return history;
839
- },
840
- getSheetData(){
841
- const sheet = this.userData ? this.userData.matriculation : null;
842
- this.sheet = sheet;
843
- this.isSheetActived = sheet ? true : false;
844
- },
845
- orderByDate(data) {
846
- let sortedArray = data.sort((a, b) => {
847
- a = a.date || '2020-01-01 12:00:00';
848
- b = b.date || '2020-01-01 12:00:00';
849
-
850
- return new Date(b).getTime() - new Date(a).getTime();
851
- });
852
-
853
- return sortedArray;
854
- },
855
- sendContact() {
856
- this.$emit('open-contact');
857
- },
858
-
859
- async getUserFolderData() {
860
- if (this.isReportsActived) {
861
- const apiUrl = `${process.env.baseApiUrlV2}/company/buffer/folder/user/${this.userFolderId}`;
862
-
863
- const data = await this.$axios(apiUrl)
864
- .then((res) => {
865
- this.liked = res.data.data.like;
866
- return res.data;
867
- })
868
- .catch(() => {});
869
-
870
- if (!data) return;
871
-
872
- this.mountUserReport(data.data);
873
- }
874
- },
875
-
876
- mountUserReport(userData) {
877
- const annex = userData.annex[0] || undefined;
878
- const comments = userData.comments || [];
879
-
880
- this.userReportData = {
881
- annex,
882
- comments
883
- };
884
- },
885
- haveAnswers(){
886
- if(this.automation && Object.keys(this.automation).length){
887
- return true;
888
- }else{
889
- this.active = this.activeName;
890
- return false;
891
- }
892
- }
893
- },
894
- computed: {
895
- currentUser() {
896
- return this.$store.state.user.currentUser;
897
- },
898
- isLocked() {
899
- return !this.companyHasProduct(
900
- this.$store.state.loja && this.$store.state.loja.showableProducts && this.$store.state.loja.showableProducts['HISTORICO_USUARIO'] || false
901
- );
902
- },
903
- companyHasAutomation() {
904
- return this.companyHasProduct(
905
- this.$store.state.loja && this.$store.state.loja.showableProducts && this.$store.state.loja.showableProducts['TRIAGEM_AUTOMATICA'] || false
906
- );
907
- },
908
- hasAutomation() {
909
- return this.automation && Object.values(this.automation).length > 0 || false;
910
- },
911
- activeTab() {
912
- let activeTab = this.activeName;
913
-
914
- if(this.hasMatch){
915
- activeTab = 'melissa';
916
-
917
- return activeTab;
918
- }
919
-
920
- if (this.jobId && this.companyHasAutomation && this.hasAutomation) {
921
- if (activeTab == 'history') {
922
- activeTab = 'melissa';
923
- }
924
- }
925
-
926
- return activeTab;
927
- },
928
- likeStatus() {
929
- return this.liked;
930
- },
931
- }
932
- };
933
- </script>
934
-
935
- <style>
936
- .el-tabs__nav-wrap.is-top::after {
937
- background: #fff !important;
938
- }
939
-
940
- .remove-baloon{
941
- cursor: pointer;
942
- }
943
-
944
- .el-tabs__active-bar.is-top {
945
- width: 30px !important;
946
- height: 4px !important;
947
- border-radius: 10px 10px 0px 0px;
948
- }
949
- </style>
950
-
951
- <style lang="scss">
952
- .match_reason{
953
- padding: 1.5rem;
954
- background: #f4f7ff;
955
- border-radius: 0.5rem;
956
- margin-bottom: 1rem;
957
-
958
- h1{
959
- font-weight: 700;
960
- font-size: 1rem;
961
- margin-bottom: 1rem;
962
- color: #5865F2;
963
- }
964
-
965
- p{
966
- font-size: 0.875rem;
967
- margin: 0;
968
- word-break: keep-all !important;
969
- text-align: justify;
970
- }
971
- }
972
-
973
- .swal2-title {
974
- font-size: 1rem !important;
975
- }
976
- .swal2-container {
977
- z-index: 5000 !important;
978
- }
979
- </style>
980
-
981
- <style lang="scss" scoped>
982
- @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
983
-
984
- .sheet-list {
985
- list-style: none;
986
- padding: 0;
987
- margin: 0;
988
-
989
- li {
990
- margin: 0;
991
- padding: 0;
992
- }
993
- }
994
-
995
- /deep/.dropzone {
996
- width: 95%;
997
-
998
- .dz-message {
999
- padding: 2rem 1rem !important;
1000
- }
1001
-
1002
- button.dz-button {
1003
- background-color: transparent;
1004
- border: 0;
1005
- }
1006
- }
1007
- .evaluation-area{
1008
- margin-bottom: 16px;
1009
- display: grid;
1010
- grid-template-columns: repeat(2, 95px);
1011
- @media (max-width:1155px){
1012
- grid-template-columns: 1fr;
1013
- }
1014
- .action{
1015
- display: grid;
1016
- grid-template-columns: 2rem 1fr;
1017
- align-items: center;
1018
- white-space: nowrap;
1019
- user-select: none;
1020
- .icon {
1021
- width: 2rem !important;
1022
- margin-bottom: 0;
1023
- }
1024
- @media (max-width: 1440px) {
1025
- justify-content:start;
1026
- }
1027
- @media (max-width:1155px){
1028
- width: 7rem;
1029
- margin-bottom: 0 !important;
1030
- }
1031
- }
1032
- &__text {
1033
- font-size: 0.8rem;
1034
- color: #32325D;
1035
- margin-left: 0.35rem;
1036
- }
1037
-
1038
- .active-icon {
1039
- font-size: 25px;
1040
- color: #AEB0B7;
1041
- transition: color 0.25s;
1042
- cursor: pointer;
1043
- &.active{
1044
- color:#fff;
1045
- }
1046
- }
1047
- }
1048
- /deep/ .el-tab-pane {
1049
- height: 760px;
1050
- max-height: 760px;
1051
- overflow: hidden;
1052
- overflow-y: auto;
1053
- position: relative;
1054
-
1055
- > .notes-title {
1056
- position: sticky;
1057
- position: -webkit-sticky;
1058
- top: 0;
1059
- background: white;
1060
- padding: 10px 0;
1061
- }
1062
-
1063
- > .input-container {
1064
- position: sticky;
1065
- position: -webkit-sticky;
1066
- bottom: 0;
1067
- background: white;
1068
- > .input-icon {
1069
- cursor: pointer;
1070
- position: absolute;
1071
- top: 50%;
1072
- right: 30px;
1073
- transform: translateY(-50%);
1074
- color: #c8c8c8;
1075
- }
1076
- }
1077
-
1078
- &::-webkit-scrollbar {
1079
- width: 8px;
1080
- }
1081
-
1082
- &::-webkit-scrollbar-track {
1083
- background: #f5f5f5;
1084
- }
1085
-
1086
- &::-webkit-scrollbar-thumb {
1087
- background: #e9e8e8;
1088
- border-radius: 10px;
1089
- }
1090
-
1091
- .archive-content {
1092
- width: 95%;
1093
-
1094
- p {
1095
- margin-bottom: 0;
1096
- font-size: 0.875rem;
1097
- padding: .3rem .6rem 0 .6rem;
1098
- }
1099
-
1100
- .archive-container {
1101
- display: flex;
1102
- align-items: center;
1103
- padding: 0.5rem 0.5rem 0.438rem;
1104
- cursor: pointer;
1105
- user-select: none;
1106
-
1107
- &:hover{
1108
- background-color: #f6f9fc;
1109
- border-radius: 5px;
1110
- }
1111
-
1112
- .archive-img {
1113
- background-color: #f5f5f5;
1114
- border-radius: 6px;
1115
- padding: 7px;
1116
- }
1117
-
1118
- .archive-name {
1119
- display: flex;
1120
- margin-left: .8rem;
1121
- width: 145%;
1122
- justify-content: space-between !important;
1123
-
1124
- .archive-icon {
1125
- margin-left: 1.5rem;
1126
- }
1127
-
1128
- p {
1129
- margin: 0;
1130
- padding: 0;
1131
- width: 13rem;
1132
- white-space: nowrap;
1133
- overflow: hidden;
1134
- text-overflow: ellipsis;
1135
- }
1136
- }
1137
-
1138
- .upload-container {
1139
- position: sticky;
1140
- position: -webkit-sticky;
1141
- bottom: 0;
1142
- background: white;
1143
- width: 231px;
1144
- }
1145
- }
1146
- }
1147
-
1148
- .archive-buttons {
1149
- display: flex;
1150
- margin-top: -1rem;
1151
- width: 95%;
1152
- }
1153
-
1154
- .archive-remove {
1155
- width: 90%;
1156
- word-break: break-word;
1157
- }
1158
- }
1159
-
1160
- /deep/ .el-tabs__nav-scroll {
1161
- display: flex;
1162
- justify-content: stretch;
1163
- align-items: flex-start;
1164
- }
1165
-
1166
- /deep/ .el-tabs__item {
1167
- padding: 0 1.5rem !important;
1168
- }
1169
-
1170
- /deep/ .el-tabs__nav {
1171
- width: 100% !important;
1172
- user-select: none;
1173
- }
1174
-
1175
- @media (max-width: 1520px) {
1176
- /deep/ .el-tabs__item {
1177
- padding: 0 1.2rem !important;
1178
- }
1179
- }
1180
- @media (max-width: 1340px) {
1181
- /deep/ .el-tabs__item {
1182
- padding: 0 1rem !important;
1183
- }
1184
- }
1185
- @media (max-width: 1240px) {
1186
- /deep/ .el-tabs__item {
1187
- padding: 0 0.8rem !important;
1188
- }
1189
- }
1190
- @media (max-width: 1140px) {
1191
- /deep/ .el-tabs__item {
1192
- padding: 0 0.6rem !important;
1193
- }
1194
- }
1195
-
1196
- .readmore {
1197
- overflow: hidden;
1198
- text-overflow: ellipsis;
1199
- display: -webkit-box;
1200
- -webkit-line-clamp: 3;
1201
- -webkit-box-orient: vertical;
1202
- }
1203
-
1204
- .tab__icon-pane {
1205
- .img__icon-pane {
1206
- background-color: #f5f5f5 !important;
1207
- border-radius: 30%;
1208
- padding: 7px;
1209
- height: 2.2rem;
1210
- width: 2.2rem;
1211
- margin-bottom: 1rem;
1212
- }
1213
- }
1214
-
1215
- .content-right {
1216
- width: 25%;
1217
- }
1218
-
1219
- .notes-title {
1220
- font-size: 14px;
1221
- word-break: break-word;
1222
- color: #1d364b;
1223
- font-weight: bold;
1224
- background-color: white;
1225
- z-index: 500;
1226
- }
1227
-
1228
- .notes-baloon {
1229
- width: 231px;
1230
- height: auto;
1231
- border-radius: 10px 10px 10px 0;
1232
- background: #eff5fd;
1233
- &.fullsize {
1234
- width: 80%!important;
1235
- min-width: 280px;
1236
- }
1237
- }
1238
- .notes-baloon-melissa {
1239
- padding: 5px 0;
1240
- .question-melissa-title{
1241
- font-size: 12px !important;
1242
- color:#62778c;
1243
- span {
1244
- word-break: break-word;
1245
- }
1246
- }
1247
- .notes-text-melissa {
1248
- font-size: 0.875rem;
1249
- color: #1d364b;
1250
- font-weight: bold;
1251
- }
1252
- &.fullsize {
1253
- width: 80%!important;
1254
- min-width: 280px;
1255
- }
1256
- }
1257
-
1258
- .notes-text {
1259
- p {
1260
- font-size: 13px;
1261
- color: #62778c;
1262
- }
1263
- }
1264
-
1265
- .notes-date {
1266
- font-size: 11px;
1267
- text-align: right;
1268
-
1269
- color: #8da2b5;
1270
- top: calc(50% - 17px / 2 - 444.5px);
1271
- }
1272
-
1273
- .notes-owner {
1274
- img {
1275
- width: 23px;
1276
- height: 23px;
1277
- border-radius: 50%;
1278
- }
1279
-
1280
- .notes-avatar {
1281
- width: 23px;
1282
- height: 23px;
1283
- border-radius: 50%;
1284
- background-color: #adb5bd;
1285
- }
1286
-
1287
- p {
1288
- font-size: 13px;
1289
- font-weight: 600;
1290
- text-transform: uppercase;
1291
-
1292
- color: #62778c;
1293
- }
1294
- }
1295
-
1296
- .notes-new {
1297
- width: 95%;
1298
- height: 33px;
1299
-
1300
- background: #f5f5f5;
1301
- border-radius: 16.5px;
1302
- border: none;
1303
-
1304
- outline: 0;
1305
- }
1306
-
1307
- .line {
1308
- width: 221px;
1309
- height: 0px;
1310
-
1311
- border: 1px solid #ececec5c;
1312
- }
1313
-
1314
- .history {
1315
- word-break: break-word;
1316
-
1317
- .history-text {
1318
- font-size: 13px;
1319
- color: #62778c;
1320
- }
1321
-
1322
- span {
1323
- font-size: 11px;
1324
- line-height: 16px;
1325
-
1326
- color: #8da2b5;
1327
- }
1328
- }
1329
-
1330
- .cursor-disabled {
1331
- cursor: no-drop;
1332
- }
1333
- </style>
1
+ <template>
2
+ <div class="bg-white content-right tabs">
3
+ <el-tabs
4
+ :class="activeTab"
5
+ class="mt-3 handle-icon-color"
6
+ v-model="activeTab"
7
+ >
8
+ <el-tab-pane
9
+ v-if="hasMatch || (companyHasAutomation && hasAutomation)"
10
+ name="melissa"
11
+ class="mx-2"
12
+ >
13
+
14
+ <div v-if="matchReason" class="match_reason">
15
+ <h1>{{ $t('user_cv.right_side.ai_insight') }}</h1>
16
+ <p>{{ matchReason }}</p>
17
+ </div>
18
+
19
+ <span class="tab__icon-pane" slot="label">
20
+ <img
21
+ class="img__icon-pane"
22
+ src="/img/recruitment/melissa.svg"
23
+ />
24
+ </span>
25
+
26
+ <p v-if="!matchReason" class="notes-title mb-0 notes-melissa-title">
27
+ {{ automation.aproved ?
28
+ $t('user_cv.right_side.candidate_approved_melissa') :
29
+ $t('user_cv.right_side.candidate_rejected_melissa') }}
30
+ </p>
31
+ <div class="line mb-3"></div>
32
+ <template>
33
+ <template>
34
+ <div v-if="automation && automation.vehicle_license && automation.vehicle_license.vehicle_license !== null">
35
+ <div class="notes-baloon-melissa mt-2">
36
+ <div class="question-melissa-title">
37
+ <span>
38
+ {{ $t('user_cv.right_side.question_drivers_license') }}
39
+ </span>
40
+ </div>
41
+ <div class="notes-text-melissa pt-2">
42
+ <span class="mt-2">
43
+ {{ Boolean(automation.vehicle_license.vehicle_license) ? $t('user_cv.right_side.answer_yes') : $t('user_cv.right_side.answer_no') }}
44
+ <span v-if="automation.vehicle_license.vehicle_license_approved">
45
+ &#x2705;
46
+ </span>
47
+ <span v-else>
48
+ &#x274C;
49
+ </span>
50
+ </span>
51
+ </div>
52
+ </div>
53
+ </div>
54
+ <div v-if="automation && automation.city && automation.city.city !== null">
55
+ <div class="notes-baloon-melissa mt-2">
56
+ <div class="question-melissa-title">
57
+ <span>
58
+ {{ $t('user_cv.right_side.question_location') }}
59
+ </span>
60
+ </div>
61
+ <div class="notes-text-melissa pt-2">
62
+ <span class="mt-2">
63
+ {{ Boolean(automation.city.city) ? $t('user_cv.right_side.answer_yes') : $t('user_cv.right_side.answer_no') }}
64
+ <span v-if="automation.city.city_approved">
65
+ &#x2705;
66
+ </span>
67
+ <span v-else>
68
+ &#x274C;
69
+ </span>
70
+ </span>
71
+ </div>
72
+ </div>
73
+ </div>
74
+ <div v-if="automation && automation.urgent_hiring && automation.urgent_hiring.urgent_hiring !== null">
75
+ <div class="notes-baloon-melissa mt-2">
76
+ <div class="question-melissa-title">
77
+ <span>
78
+ {{ $t('user_cv.right_side.question_urgent_hiring') }}
79
+ </span>
80
+ </div>
81
+ <div class="notes-text-melissa pt-2">
82
+ <span class="mt-2">
83
+ {{ Boolean(automation.urgent_hiring.urgent_hiring) ? $t('user_cv.right_side.answer_yes') : $t('user_cv.right_side.answer_no') }}
84
+ <span v-if="automation.urgent_hiring.urgent_hiring_approved">
85
+ &#x2705;
86
+ </span>
87
+ <span v-else>
88
+ &#x274C;
89
+ </span>
90
+ </span>
91
+ </div>
92
+ </div>
93
+ </div>
94
+ <div v-if="automation && automation.school_formation && automation.school_formation.school_formation !== null && automation.school_formation.option !== null">
95
+ <div class="notes-baloon-melissa mt-2">
96
+ <div class="question-melissa-title">
97
+ <span>
98
+ {{ $t('user_cv.right_side.question_completed_course') }} <b>{{automation.school_formation.option}}</b>?
99
+ </span>
100
+ </div>
101
+ <div class="notes-text-melissa pt-2">
102
+ <span class="mt-2">
103
+ {{ Boolean(automation.school_formation.school_formation) ? $t('user_cv.right_side.answer_yes') : $t('user_cv.right_side.answer_no') }}
104
+
105
+ <span v-if="automation.school_formation.school_formation_approved">
106
+ &#x2705;
107
+ </span>
108
+ <span v-else>
109
+ &#x274C;
110
+ </span>
111
+ </span>
112
+ </div>
113
+ </div>
114
+ </div>
115
+ <div v-if="automation && automation.tool_experience && automation.tool_experience.tool_experience !== null && automation.tool_experience.option !== null">
116
+ <div class="notes-baloon-melissa mt-2">
117
+ <div class="question-melissa-title">
118
+ <span>
119
+ {{ $t('user_cv.right_side.question_tool_experience') }} <b>{{automation.tool_experience.option}}</b>?
120
+ </span>
121
+ </div>
122
+ <div class="notes-text-melissa pt-2">
123
+ <span class="mt-2">
124
+ {{ automation.tool_experience.tool_experience }}
125
+ <span v-if="automation.tool_experience.tool_experience_approved">
126
+ &#x2705;
127
+ </span>
128
+ <span v-else>
129
+ &#x274C;
130
+ </span>
131
+ </span>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ <div v-if="automation && automation.work_experience && automation.work_experience.work_experience !== null && automation.work_experience.option !== null">
136
+ <div class="notes-baloon-melissa mt-2">
137
+ <div class="question-melissa-title">
138
+ <span>
139
+ {{ $t('user_cv.right_side.question_work_experience') }} <b>{{automation.work_experience.option}}</b>?
140
+ </span>
141
+ </div>
142
+ <div class="notes-text-melissa pt-2">
143
+ <span class="mt-2">
144
+ {{ automation.work_experience.work_experience }}
145
+ <span v-if="automation.work_experience.work_experience_approved">
146
+ &#x2705;
147
+ </span>
148
+ <span v-else>
149
+ &#x274C;
150
+ </span>
151
+ </span>
152
+ </div>
153
+ </div>
154
+ </div>
155
+ <div v-if="automation && automation.sector_experience && automation.sector_experience.sector_experience !== null && automation.sector_experience.option !== null">
156
+ <div class="notes-baloon-melissa mt-2">
157
+ <div class="question-melissa-title">
158
+ <span>
159
+ {{ $t('user_cv.right_side.question_sector_experience') }} <b>{{automation.sector_experience.option}}</b>?
160
+ </span>
161
+ </div>
162
+ <div class="notes-text-melissa pt-2">
163
+ <span class="mt-2">
164
+ {{ automation.sector_experience.sector_experience }}
165
+ <span v-if="automation.sector_experience.sector_experience_approved">
166
+ &#x2705;
167
+ </span>
168
+ <span v-else>
169
+ &#x274C;
170
+ </span>
171
+ </span>
172
+ </div>
173
+ </div>
174
+ </div>
175
+ <div v-if="automation && automation.language && automation.language.language !== null && automation.language.option !== null">
176
+ <div class="notes-baloon-melissa mt-2">
177
+ <div class="question-melissa-title">
178
+ <span>
179
+ {{ $t('user_cv.right_side.question_language_proficiency') }} <b>{{automation.language.option}}</b>?
180
+ </span>
181
+ </div>
182
+ <div class="notes-text-melissa pt-2">
183
+ <span class="mt-2">
184
+ {{ automation.language.language }}
185
+ <span v-if="automation.language.language_approved">
186
+ &#x2705;
187
+ </span>
188
+ <span v-else>
189
+ &#x274C;
190
+ </span>
191
+ </span>
192
+ </div>
193
+ </div>
194
+ </div>
195
+ <div
196
+ v-for="(melissa,index) in automation.custom"
197
+ :key="index"
198
+ >
199
+ <div class="notes-baloon-melissa mt-2">
200
+ <div class="question-melissa-title">
201
+ <span>{{ melissa.question }}</span>
202
+ </div>
203
+ <div class="notes-text-melissa pt-2">
204
+ <span class="mt-2">
205
+ {{ typeof melissa.response === "boolean" ? melissa.response ? $t('user_cv.right_side.answer_yes') : $t('user_cv.right_side.answer_no') : melissa.response }}
206
+ <span v-if="melissa.approved_in_question">
207
+ &#x2705;
208
+ </span>
209
+ <span v-else>
210
+ &#x274C;
211
+ </span>
212
+ </span>
213
+ </div>
214
+ </div>
215
+ </div>
216
+ </template>
217
+ </template>
218
+ </el-tab-pane>
219
+ <el-tab-pane class="history ml-2" name="history">
220
+ <span class="tab__icon-pane" slot="label">
221
+ <img
222
+ class="img__icon-pane img__icon--history"
223
+ src="../../../../assets/images/icons/historicCv.svg"
224
+ />
225
+ </span>
226
+ <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
227
+
228
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.company_history') }}</p>
229
+ <div class="line mb-3"></div>
230
+
231
+ <template v-if="!isLocked">
232
+ <div
233
+ class="mt-3"
234
+ v-for="(item, index) in orderByDate(companyHistory())"
235
+ :key="index"
236
+ >
237
+ <div class="d-flex align-items-center justify-content-between">
238
+ <p class="history-text mb-0" v-html="item.text" />
239
+
240
+ <el-tooltip
241
+ placement="top"
242
+ :content="$t('user_cv.right_side.download_pdf')"
243
+ >
244
+ <button
245
+ v-if="item.hasDownload"
246
+ class="py-2 px-3 mx-2 border-0 bg-transparent text-primary"
247
+ @click="() => downloadPdf(item)"
248
+ >
249
+ <i class="fas fa-download" />
250
+ </button>
251
+ </el-tooltip>
252
+ </div>
253
+
254
+ <span>{{ item.date | convertDate }}</span>
255
+ </div>
256
+ <p v-if="companyHistory().length === 0" class="history-text">
257
+ {{ $t('user_cv.right_side.empty_history') }}
258
+ </p>
259
+ </template>
260
+ </el-tab-pane>
261
+
262
+ <el-tab-pane name="notes" class="ml-2" v-if="isNotesActived">
263
+ <span class="tab__icon-pane" slot="label">
264
+ <img
265
+ class="img__icon-pane img__icon--notes"
266
+ src="../../../../assets/images/icons/notesCv.svg"
267
+ />
268
+ </span>
269
+
270
+ <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
271
+
272
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.team_notes') }}</p>
273
+ <div class="line mb-3"></div>
274
+
275
+ <template v-if="!isLocked">
276
+ <template v-if="notes.length > 0">
277
+ <div
278
+ v-for="(note, index) in notes.slice(0, 5)"
279
+ :key="index"
280
+ >
281
+ <div class="notes-baloon">
282
+ <div class="notes-text ml-3 pt-1">
283
+ <p class="mt-3">{{ note.text }}</p>
284
+ </div>
285
+ <div
286
+ class="d-flex justify-content-between align-items-center mx-3"
287
+ >
288
+ <p @click.prevent="handleRemoveNote(note)" v-if="String(currentUser.id) === String(note.user_id)" class="notes-date remove-baloon">
289
+ {{ $t('user_cv.right_side.delete_note') }}
290
+ </p>
291
+ <div v-else></div>
292
+
293
+ <p class="notes-date">
294
+ {{ note.created_at | convertDate }}
295
+ </p>
296
+ </div>
297
+ </div>
298
+ <div class="notes-owner d-flex mt-2">
299
+ <image-with-fallback
300
+ :src="note.user.urlAvatar"
301
+ :alt="note.user.name"
302
+ :fallbackText="note.user.name"
303
+ />
304
+ <p class="ml-1">
305
+ {{ note.user.name }}
306
+ </p>
307
+ </div>
308
+ </div>
309
+ </template>
310
+ <div class="notes-text" v-if="notes.length === 0">
311
+ <p>{{ $t('user_cv.right_side.no_notes_created') }}</p>
312
+ </div>
313
+ </template>
314
+
315
+ <div class="input-container" v-if="!isLocked">
316
+ <input
317
+ class="notes-new pl-4 mt-3 mb-3 form-rounded"
318
+ type="text"
319
+ :placeholder="$t('user_cv.right_side.write_note_placeholder')"
320
+ v-model="newNote"
321
+ @change="$emit('new-note', newNote, userData.id)"
322
+ v-on:change="cleatInput()"
323
+ />
324
+ <i
325
+ @click="
326
+ newNote.length > 0 &&
327
+ $emit('new-note', newNote, userData.id)
328
+ "
329
+ class="fas fa-paper-plane input-icon"
330
+ ></i>
331
+ </div>
332
+ </el-tab-pane>
333
+
334
+ <el-tab-pane name="documents" class="ml-2">
335
+ <span class="tab__icon-pane" slot="label">
336
+ <img
337
+ class="img__icon-pane img__icon--documents"
338
+ src="../../../../assets/images/icons/icon3.svg"
339
+ />
340
+ </span>
341
+
342
+ <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
343
+
344
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.attached_documents') }}</p>
345
+ <div class="line mb-3"></div>
346
+
347
+ <template v-if="!isLocked">
348
+ <div class="archive-content">
349
+ <div v-for="(item, index) in archives" :key="index">
350
+ <div @click="openArchive(item)" class="archive-container">
351
+ <div>
352
+ <img class="archive-img" src="../../../../assets/images/icons/icon3.svg" >
353
+ </div>
354
+ <div class="archive-name">
355
+ <span>{{item.name}}</span>
356
+ <div class="archive-icon">
357
+ <i @click.stop.prevent="openRemoveSection(item, (index+1))" class="far fa-trash-alt"></i>
358
+ </div>
359
+ </div>
360
+ </div>
361
+ <div v-if="hasRemove && hasRemove == (index+1)" class="archive-remove">
362
+ <p>{{ $t('user_cv.right_side.delete_file_confirmation') }}</p>
363
+ <div class="d-flex">
364
+ <base-button
365
+ @click="removeArchive(currentRemoveItem, index)"
366
+ size="sm"
367
+ class="btn-outline-primary col-6 p-1"
368
+ >
369
+ {{ $t('user_cv.right_side.delete_button') }}
370
+ </base-button>
371
+ <base-button
372
+ @click="hasRemove = false"
373
+ size="sm"
374
+ class="btn-outline-danger col-6 p-1"
375
+ >
376
+ {{ $t('user_cv.right_side.cancel_button') }}
377
+ </base-button>
378
+ </div>
379
+ </div>
380
+ </div>
381
+ </div>
382
+
383
+ <div class="notes-text" v-if="archives == null">
384
+ <p>{{ $t('user_cv.right_side.no_files_attached') }}</p>
385
+ </div>
386
+ </template>
387
+
388
+ <div class="input-container" v-if="!isLocked">
389
+ <div class="mt-5">
390
+ <dropzone-file-upload
391
+ disabled
392
+ @error="showMessageError"
393
+ ref="MyDropzone"
394
+ :options="dropzoneOptions"
395
+ v-model="fileToUpload"
396
+ />
397
+ </div>
398
+
399
+ <div class="archive-buttons">
400
+ <base-button @click="saveImage" size="sm" class="btn-outline-primary btn-rounded col-12">{{ $t('user_cv.right_side.save_button') }}</base-button>
401
+ </div>
402
+ </div>
403
+ </el-tab-pane>
404
+
405
+ <el-tab-pane name="reports" class="ml-2" v-if="isReportsActived">
406
+ <span class="tab__icon-pane" slot="label">
407
+ <img
408
+ class="img__icon-pane img__icon--reports"
409
+ src="../../../../assets/images/icons/icon5.svg"
410
+ />
411
+ </span>
412
+
413
+ <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
414
+
415
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.candidate_report') }}</p>
416
+ <div class="line mb-3"></div>
417
+ <div class="evaluation-area" v-if="likeStatus">
418
+ <div class="action">
419
+ <like class="icon" :colorActiveLike="likeStatus"/>
420
+ <span class="font-weight-bold evaluation-area__text">
421
+ {{ $t('user_cv.right_side.liked') }}
422
+ </span>
423
+ </div>
424
+ <div class="action">
425
+ <deslike class="icon" :colorActiveDeslike="likeStatus"/>
426
+ <span class="font-weight-bold evaluation-area__text">
427
+ {{ $t('user_cv.right_side.disliked') }}
428
+ </span>
429
+ </div>
430
+ </div>
431
+ <template v-if="!isLocked">
432
+ <div class="input-container" v-if="!userReportData.annex">
433
+ <dropzone-file-upload
434
+ disabled
435
+ ref="MyReportDropzone"
436
+ v-model="reportFileUpload"
437
+ :options="reportsDropdownzoneOptions"
438
+ @error="showMessageError"
439
+ />
440
+
441
+ <div class="archive-buttons" v-if="reportFileUpload.length > 0">
442
+ <base-button @click="saveReport" size="sm" class="btn-outline-primary btn-rounded col-12">{{ $t('user_cv.right_side.save_button') }}</base-button>
443
+ </div>
444
+ </div>
445
+
446
+ <div class="archive-content" v-else-if="userReportData.annex">
447
+ <div @click="openArchive(userReportData.annex)" class="archive-container">
448
+ <div>
449
+ <img class="archive-img" src="../../../../assets/images/icons/icon6.svg" >
450
+ </div>
451
+ <div class="archive-name">
452
+ <span>{{ userReportData.annex.name }}</span>
453
+ <div class="archive-icon">
454
+ <i @click.stop.prevent="openReportRemoveSection(userReportData.annex)" class="far fa-trash-alt"></i>
455
+ </div>
456
+ </div>
457
+ </div>
458
+ <div v-if="hasReportRemove" class="archive-remove">
459
+ <p>{{ $t('user_cv.right_side.delete_file_confirmation') }}</p>
460
+ <div class="d-flex">
461
+ <base-button
462
+ @click="removeReportArchive(currentRemoveItem)"
463
+ size="sm"
464
+ class="btn-outline-primary col-6 p-1"
465
+ >
466
+ {{ $t('user_cv.right_side.delete_button') }}
467
+ </base-button>
468
+ <base-button
469
+ @click="hasRemove = false"
470
+ size="sm"
471
+ class="btn-outline-danger col-6 p-1"
472
+ >
473
+ {{ $t('user_cv.right_side.cancel_button') }}
474
+ </base-button>
475
+ </div>
476
+ </div>
477
+ </div>
478
+ </template>
479
+
480
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.recruiter_comments') }}</p>
481
+ <div class="line mb-3"></div>
482
+
483
+ <template v-if="!isLocked">
484
+ <div v-if="userReportData.comments && userReportData.comments.length > 0">
485
+ <note-baloon
486
+ v-for="comment in userReportData.comments"
487
+ :key="comment.id"
488
+ :comment="comment"
489
+ @remove-comment="removeComment"
490
+ />
491
+ </div>
492
+ </template>
493
+
494
+ <div class="input-container" v-if="!isLocked">
495
+ <input
496
+ class="notes-new pl-4 mt-3 mb-3 form-rounded"
497
+ type="text"
498
+ :placeholder="$t('user_cv.right_side.write_note_placeholder')"
499
+ v-model="newReportNote"
500
+ @change="handleNewReportNoteSubmit"
501
+ v-on:change="cleatInput()"
502
+ />
503
+ <i
504
+ @click="handleNewReportNoteSubmit"
505
+ class="fas fa-paper-plane input-icon"
506
+ ></i>
507
+ </div>
508
+ </el-tab-pane>
509
+
510
+ <el-tab-pane name="dados-da-folha" class="ml-2" v-if="isSheetActived">
511
+ <span class="tab__icon-pane" slot="label">
512
+ <img
513
+ class="img__icon-pane img__icon--reports"
514
+ src="../../../../assets/images/icons/icon9.svg"
515
+ />
516
+ </span>
517
+
518
+ <upgrade-plan @send-contact="sendContact" v-if="isLocked" />
519
+
520
+ <p class="notes-title mb-0">{{ $t('user_cv.right_side.payroll_data') }}</p>
521
+
522
+ <ul class="sheet-list">
523
+ <li>{{ $t('user_cv.right_side.unit_label') }} <span>{{ sheet.name_branch }}</span></li>
524
+ <li>{{ $t('user_cv.right_side.salary_label') }} <span>{{ sheet.sallary || '-' }}</span></li>
525
+ <li>{{ $t('user_cv.right_side.department_label') }} <span>{{ sheet.nane_department || '-' }}</span></li>
526
+ <li>{{ $t('user_cv.right_side.direct_manager_label') }} <span>{{ sheet.manager_immediate || '-' }}</span></li>
527
+ <li>{{ $t('user_cv.right_side.admission_date_label') }} <span>{{ sheet.entry_date || '-' }}</span></li>
528
+ <li>{{ $t('user_cv.right_side.position_label') }} <span>{{ sheet.job_title_name || '-' }}</span></li>
529
+ <li>{{ $t('user_cv.right_side.registration_label') }} <span>{{ sheet.enrolment || '-' }}</span></li>
530
+ </ul>
531
+ </el-tab-pane>
532
+ </el-tabs>
533
+ </div>
534
+ </template>
535
+
536
+ <script>
537
+ import { Tabs, TabPane } from 'element-ui';
538
+ import DropzoneFileUpload from '@burh/nuxt-core/components/argon-core/Inputs/DropzoneFileUpload.vue';
539
+ import swal from 'sweetalert2';
540
+ import UpgradePlan from './UpgradePlan.vue';
541
+ import like from '../../../organismos/atomos/Like.vue';
542
+ import deslike from '../../../organismos/atomos/Deslike.vue';
543
+ import NoteBaloon from './CvRight/NoteBaloon.vue';
544
+
545
+ export default {
546
+ name: 'user-cv-right-side',
547
+ filters: {
548
+ convertDate(data) {
549
+ if (typeof data !== 'string') {
550
+ data = '2020-01-01 12:00:00';
551
+ }
552
+ let d = new Date(data);
553
+ let options = { hour: '2-digit', minute: '2-digit' };
554
+ return d.toLocaleDateString('pt-BR', options);
555
+ }
556
+ },
557
+ watch:{
558
+ fileToUpload(value){
559
+ if(value.length > 0 && value[0].accepted) {
560
+ this.isError = false;
561
+ }
562
+ },
563
+ reportFileUpload(value){
564
+ if(value.length > 0 && value[0].accepted) {
565
+ this.isError = false;
566
+ }
567
+ },
568
+ archives() {
569
+ this.getUserFolderData();
570
+ }
571
+ },
572
+ components: {
573
+ [Tabs.name]: Tabs,
574
+ [TabPane.name]: TabPane,
575
+ DropzoneFileUpload,
576
+ UpgradePlan,
577
+ like,
578
+ deslike,
579
+ NoteBaloon
580
+ },
581
+ data(){
582
+ return {
583
+ newNote: '',
584
+ newReportNote: '',
585
+ liked: 0,
586
+ hasRemove: null,
587
+ isError: true,
588
+ currentRemoveItem: null,
589
+ fileToUpload: [],
590
+ dropzoneOptions: {
591
+ maxFilesize: 5,
592
+ dictFileTooBig: this.$t('user_cv.right_side.dropzone_file_too_big'),
593
+ dictDefaultMessage: this.$t('user_cv.right_side.dropzone_default_message'),
594
+ dictInvalidFileType: this.$t('user_cv.right_side.dropzone_invalid_file'),
595
+ dictMaxFilesExceeded: this.$t('user_cv.right_side.dropzone_max_files'),
596
+ acceptedFiles: 'image/*, application/pdf',
597
+ },
598
+ reportFileUpload: [],
599
+ reportsDropdownzoneOptions: {
600
+ maxFilesize: 1,
601
+ dictFileTooBig: this.$t('user_cv.right_side.dropzone_file_too_big'),
602
+ dictDefaultMessage: this.$t('user_cv.right_side.dropzone_default_message'),
603
+ dictInvalidFileType: this.$t('user_cv.right_side.dropzone_invalid_file'),
604
+ dictMaxFilesExceeded: this.$t('user_cv.right_side.dropzone_max_files'),
605
+ acceptedFiles: 'image/*, application/pdf',
606
+ },
607
+ userReportData: [],
608
+ hasReportRemove: false,
609
+ hasCommentRemove: false,
610
+ sheet: null,
611
+ isSheetActived: false,
612
+ };
613
+ },
614
+ props: {
615
+ archives: Array,
616
+ userData: Object,
617
+ automation:{
618
+ type:Object || null,
619
+ default:null
620
+ },
621
+ notes: Array,
622
+ activeName: String,
623
+ jobId:{
624
+ type:[String, Number, Object],
625
+ default:null
626
+ },
627
+ userFolderId: String,
628
+ isNotesActived: {
629
+ type: Boolean,
630
+ default: true
631
+ },
632
+ isReportsActived: {
633
+ type: Boolean,
634
+ default: false
635
+ },
636
+ hasMatch: {
637
+ type: Boolean,
638
+ default: false
639
+ },
640
+ matchReason: {
641
+ type: String,
642
+ default: ''
643
+ }
644
+ },
645
+ mounted() {
646
+ this.companyHistory();
647
+ this.getUserFolderData();
648
+ this.getSheetData();
649
+ },
650
+ methods: {
651
+ async handleRemoveNote(note) {
652
+ const apiUrl = `${process.env.baseApiUrl}/company/${note.company_id}/user/${note.user_id}/note/${note.id}`;
653
+
654
+ const response = await this.$axios.delete(apiUrl)
655
+ .then(res => res.data)
656
+ .catch(() => {});
657
+
658
+ if (!response || response && response.error) return this.showToast('error', this.$t('user_cv.right_side.error_remove_note'));
659
+
660
+ this.notes = this.notes.filter(n => n.id !== note.id);
661
+ },
662
+ removeComment(commentId){
663
+ this.userReportData.comments = this.userReportData.comments.filter(comment => comment.id != commentId);
664
+ this.$emit('remove-comment', commentId);
665
+ },
666
+ handleNewReportNoteSubmit() {
667
+ if (this.newReportNote.length > 3) {
668
+ this.$emit('new-report-note', this.newReportNote, this.userFolderId, this.userData.id);
669
+ this.newReportNote = '';
670
+ }
671
+ },
672
+ openRemoveSection(item, index) {
673
+ this.hasRemove = index;
674
+ this.currentRemoveItem = item;
675
+ },
676
+ openReportRemoveSection(item) {
677
+ this.hasReportRemove = true;
678
+ this.currentRemoveItem = item;
679
+ },
680
+
681
+ showToast(type, title){
682
+ const Toast = swal.mixin({
683
+ toast: true,
684
+ position: 'top-end',
685
+ showConfirmButton: false,
686
+ timer: 3100,
687
+ });
688
+
689
+ return Toast.fire({
690
+ type: type,
691
+ title: title
692
+ });
693
+ },
694
+
695
+ showMessageError(file, message) {
696
+ this.isError = true;
697
+ this.$refs.Mydropzone && this.$refs.Mydropzone.removeAllFiles();
698
+
699
+ if (file.status !== 'canceled'){
700
+ this.showToast('error', message);
701
+ }
702
+ },
703
+ openArchive(item) {
704
+ window.open(item.storage_url, '_blank');
705
+ },
706
+ saveImage(){
707
+ if (!this.isError) {
708
+ this.$emit('save-archive', this.fileToUpload[0], this.userData.id);
709
+ this.$refs.MyDropzone && this.$refs.MyDropzone.removeAllFiles();
710
+ this.showToast('success', this.$t('user_cv.right_side.file_sent_success'));
711
+ } else {
712
+ if (this.fileToUpload.length > 0) {
713
+ this.showToast('error', this.$t('user_cv.right_side.invalid_file'));
714
+ } else {
715
+ this.showToast('warning', this.$t('user_cv.right_side.select_file'));
716
+ }
717
+ }
718
+ },
719
+ saveReport() {
720
+ if (!this.isError) {
721
+ this.$emit('save-report', this.reportFileUpload[0], this.userFolderId);
722
+ this.$refs.MyReportDropzone && this.$refs.MyReportDropzone.removeAllFiles();
723
+ this.showToast('success', this.$t('user_cv.right_side.file_sent_success'));
724
+
725
+ } else {
726
+ if (this.reportFileUpload.length > 0) {
727
+ this.showToast('error', this.$t('user_cv.right_side.invalid_file'));
728
+ } else {
729
+ this.showToast('warning', this.$t('user_cv.right_side.select_file'));
730
+ }
731
+ }
732
+ },
733
+
734
+ removeArchive(archive, index){
735
+ this.$emit('remove-archive', archive.user_id, archive.id, archive.company_id, index);
736
+ this.hasRemove = null;
737
+ },
738
+
739
+ removeReportArchive(archive) {
740
+ this.userReportData.annex = undefined;
741
+
742
+ this.$emit('remove-report', archive.id);
743
+ this.hasReportRemove = false;
744
+ },
745
+
746
+ cleatInput() {
747
+ this.newNote = '';
748
+ },
749
+ async downloadPdf(param) {
750
+ let data = await this.$store.app.$services.testOnline.downloadPdf(
751
+ param.id
752
+ );
753
+
754
+ const url = window.URL.createObjectURL(data.data);
755
+ const link = document.createElement('a');
756
+ link.href = url;
757
+ link.setAttribute(
758
+ 'download',
759
+ `${param.user.name}-${param.test.name}.pdf`
760
+ );
761
+ document.body.appendChild(link);
762
+ link.click();
763
+ link.remove();
764
+ window.URL.revokeObjectURL(url);
765
+ },
766
+ getTestHistory() {
767
+ const tests = this.userData.tests.map(test => {
768
+ if (!test.finished_at) {
769
+ return;
770
+ }
771
+
772
+ const testData = {
773
+ avarage: test.avarage,
774
+ date: test.finished_at,
775
+ text: `${this.$t('user_cv.right_side.completed_test')} ${test.test.name.toUpperCase()} ${this.$t('user_cv.right_side.with_score')} <b>${test.avarage}</b>`
776
+ };
777
+
778
+ return testData;
779
+ }).filter(item => item);
780
+
781
+ return tests;
782
+ },
783
+ companyHistory() {
784
+ let history = [];
785
+
786
+ let jobs = this.userData.user_applied_job.map(job => {
787
+ return {
788
+ id: job.id,
789
+ date: job.subscribe_at,
790
+ user: {
791
+ name: this.userData.name
792
+ },
793
+ job: {
794
+ name: job.job.title
795
+ },
796
+ text: `${this.$t('user_cv.right_side.applied_to_position')} ${job.job.title}`
797
+ };
798
+ });
799
+
800
+ let tests = this.userData.tests.map(x => {
801
+ let test = {
802
+ id: x.id,
803
+ date: x.finished_at || x.created_at,
804
+ user: {
805
+ name: this.userData.name
806
+ },
807
+ test: {
808
+ name: x.test.name
809
+ }
810
+ };
811
+
812
+ if (x.finished_at) {
813
+ test.text = `${this.$t('user_cv.right_side.completed_test')} ${x.test.name.toUpperCase()} ${this.$t('user_cv.right_side.with_score')} <b>${x.avarage}</b>`;
814
+ test.hasDownload = true;
815
+ } else {
816
+ test.text = `${this.$t('user_cv.right_side.received_test')} ${x.test.name.toUpperCase()}`;
817
+ }
818
+
819
+ return test;
820
+ });
821
+
822
+ let courses = this.userData.courses_user.map(x => {
823
+ if (x.finished_at) {
824
+ return{
825
+ date: x.finished_at,
826
+ text: `${this.$t('user_cv.right_side.completed_course')} ${x.course.name.toUpperCase()}`
827
+ };
828
+ }
829
+ });
830
+
831
+ let discs = this.userData.solides.map(x => ({
832
+ date: x.end,
833
+ text: this.$t('user_cv.right_side.took_disc_test')
834
+ }));
835
+
836
+ history = history.concat(jobs, tests, discs, courses);
837
+
838
+ return history;
839
+ },
840
+ getSheetData(){
841
+ const sheet = this.userData ? this.userData.matriculation : null;
842
+ this.sheet = sheet;
843
+ this.isSheetActived = sheet ? true : false;
844
+ },
845
+ orderByDate(data) {
846
+ let sortedArray = data.sort((a, b) => {
847
+ a = a.date || '2020-01-01 12:00:00';
848
+ b = b.date || '2020-01-01 12:00:00';
849
+
850
+ return new Date(b).getTime() - new Date(a).getTime();
851
+ });
852
+
853
+ return sortedArray;
854
+ },
855
+ sendContact() {
856
+ this.$emit('open-contact');
857
+ },
858
+
859
+ async getUserFolderData() {
860
+ if (this.isReportsActived) {
861
+ const apiUrl = `${process.env.baseApiUrlV2}/company/buffer/folder/user/${this.userFolderId}`;
862
+
863
+ const data = await this.$axios(apiUrl)
864
+ .then((res) => {
865
+ this.liked = res.data.data.like;
866
+ return res.data;
867
+ })
868
+ .catch(() => {});
869
+
870
+ if (!data) return;
871
+
872
+ this.mountUserReport(data.data);
873
+ }
874
+ },
875
+
876
+ mountUserReport(userData) {
877
+ const annex = userData.annex[0] || undefined;
878
+ const comments = userData.comments || [];
879
+
880
+ this.userReportData = {
881
+ annex,
882
+ comments
883
+ };
884
+ },
885
+ haveAnswers(){
886
+ if(this.automation && Object.keys(this.automation).length){
887
+ return true;
888
+ }else{
889
+ this.active = this.activeName;
890
+ return false;
891
+ }
892
+ }
893
+ },
894
+ computed: {
895
+ currentUser() {
896
+ return this.$store.state.user.currentUser;
897
+ },
898
+ isLocked() {
899
+ return !this.companyHasProduct(
900
+ this.$store.state.loja && this.$store.state.loja.showableProducts && this.$store.state.loja.showableProducts['HISTORICO_USUARIO'] || false
901
+ );
902
+ },
903
+ companyHasAutomation() {
904
+ return this.companyHasProduct(
905
+ this.$store.state.loja && this.$store.state.loja.showableProducts && this.$store.state.loja.showableProducts['TRIAGEM_AUTOMATICA'] || false
906
+ );
907
+ },
908
+ hasAutomation() {
909
+ return this.automation && Object.values(this.automation).length > 0 || false;
910
+ },
911
+ activeTab() {
912
+ let activeTab = this.activeName;
913
+
914
+ if(this.hasMatch){
915
+ activeTab = 'melissa';
916
+
917
+ return activeTab;
918
+ }
919
+
920
+ if (this.jobId && this.companyHasAutomation && this.hasAutomation) {
921
+ if (activeTab == 'history') {
922
+ activeTab = 'melissa';
923
+ }
924
+ }
925
+
926
+ return activeTab;
927
+ },
928
+ likeStatus() {
929
+ return this.liked;
930
+ },
931
+ }
932
+ };
933
+ </script>
934
+
935
+ <style>
936
+ .el-tabs__nav-wrap.is-top::after {
937
+ background: #fff !important;
938
+ }
939
+
940
+ .remove-baloon{
941
+ cursor: pointer;
942
+ }
943
+
944
+ .el-tabs__active-bar.is-top {
945
+ width: 30px !important;
946
+ height: 4px !important;
947
+ border-radius: 10px 10px 0px 0px;
948
+ }
949
+ </style>
950
+
951
+ <style lang="scss">
952
+ .match_reason{
953
+ padding: 1.5rem;
954
+ background: #f4f7ff;
955
+ border-radius: 0.5rem;
956
+ margin-bottom: 1rem;
957
+
958
+ h1{
959
+ font-weight: 700;
960
+ font-size: 1rem;
961
+ margin-bottom: 1rem;
962
+ color: #5865F2;
963
+ }
964
+
965
+ p{
966
+ font-size: 0.875rem;
967
+ margin: 0;
968
+ word-break: keep-all !important;
969
+ text-align: justify;
970
+ }
971
+ }
972
+
973
+ .swal2-title {
974
+ font-size: 1rem !important;
975
+ }
976
+ .swal2-container {
977
+ z-index: 5000 !important;
978
+ }
979
+ </style>
980
+
981
+ <style lang="scss" scoped>
982
+ @import '@burh/nuxt-core/assets/sass/burh-ds/variables/_colors.scss';
983
+
984
+ .sheet-list {
985
+ list-style: none;
986
+ padding: 0;
987
+ margin: 0;
988
+
989
+ li {
990
+ margin: 0;
991
+ padding: 0;
992
+ }
993
+ }
994
+
995
+ /deep/.dropzone {
996
+ width: 95%;
997
+
998
+ .dz-message {
999
+ padding: 2rem 1rem !important;
1000
+ }
1001
+
1002
+ button.dz-button {
1003
+ background-color: transparent;
1004
+ border: 0;
1005
+ }
1006
+ }
1007
+ .evaluation-area{
1008
+ margin-bottom: 16px;
1009
+ display: grid;
1010
+ grid-template-columns: repeat(2, 95px);
1011
+ @media (max-width:1155px){
1012
+ grid-template-columns: 1fr;
1013
+ }
1014
+ .action{
1015
+ display: grid;
1016
+ grid-template-columns: 2rem 1fr;
1017
+ align-items: center;
1018
+ white-space: nowrap;
1019
+ user-select: none;
1020
+ .icon {
1021
+ width: 2rem !important;
1022
+ margin-bottom: 0;
1023
+ }
1024
+ @media (max-width: 1440px) {
1025
+ justify-content:start;
1026
+ }
1027
+ @media (max-width:1155px){
1028
+ width: 7rem;
1029
+ margin-bottom: 0 !important;
1030
+ }
1031
+ }
1032
+ &__text {
1033
+ font-size: 0.8rem;
1034
+ color: #32325D;
1035
+ margin-left: 0.35rem;
1036
+ }
1037
+
1038
+ .active-icon {
1039
+ font-size: 25px;
1040
+ color: #AEB0B7;
1041
+ transition: color 0.25s;
1042
+ cursor: pointer;
1043
+ &.active{
1044
+ color:#fff;
1045
+ }
1046
+ }
1047
+ }
1048
+ /deep/ .el-tab-pane {
1049
+ height: 760px;
1050
+ max-height: 760px;
1051
+ overflow: hidden;
1052
+ overflow-y: auto;
1053
+ position: relative;
1054
+
1055
+ > .notes-title {
1056
+ position: sticky;
1057
+ position: -webkit-sticky;
1058
+ top: 0;
1059
+ background: white;
1060
+ padding: 10px 0;
1061
+ }
1062
+
1063
+ > .input-container {
1064
+ position: sticky;
1065
+ position: -webkit-sticky;
1066
+ bottom: 0;
1067
+ background: white;
1068
+ > .input-icon {
1069
+ cursor: pointer;
1070
+ position: absolute;
1071
+ top: 50%;
1072
+ right: 30px;
1073
+ transform: translateY(-50%);
1074
+ color: #c8c8c8;
1075
+ }
1076
+ }
1077
+
1078
+ &::-webkit-scrollbar {
1079
+ width: 8px;
1080
+ }
1081
+
1082
+ &::-webkit-scrollbar-track {
1083
+ background: #f5f5f5;
1084
+ }
1085
+
1086
+ &::-webkit-scrollbar-thumb {
1087
+ background: #e9e8e8;
1088
+ border-radius: 10px;
1089
+ }
1090
+
1091
+ .archive-content {
1092
+ width: 95%;
1093
+
1094
+ p {
1095
+ margin-bottom: 0;
1096
+ font-size: 0.875rem;
1097
+ padding: .3rem .6rem 0 .6rem;
1098
+ }
1099
+
1100
+ .archive-container {
1101
+ display: flex;
1102
+ align-items: center;
1103
+ padding: 0.5rem 0.5rem 0.438rem;
1104
+ cursor: pointer;
1105
+ user-select: none;
1106
+
1107
+ &:hover{
1108
+ background-color: #f6f9fc;
1109
+ border-radius: 5px;
1110
+ }
1111
+
1112
+ .archive-img {
1113
+ background-color: #f5f5f5;
1114
+ border-radius: 6px;
1115
+ padding: 7px;
1116
+ }
1117
+
1118
+ .archive-name {
1119
+ display: flex;
1120
+ margin-left: .8rem;
1121
+ width: 145%;
1122
+ justify-content: space-between !important;
1123
+
1124
+ .archive-icon {
1125
+ margin-left: 1.5rem;
1126
+ }
1127
+
1128
+ p {
1129
+ margin: 0;
1130
+ padding: 0;
1131
+ width: 13rem;
1132
+ white-space: nowrap;
1133
+ overflow: hidden;
1134
+ text-overflow: ellipsis;
1135
+ }
1136
+ }
1137
+
1138
+ .upload-container {
1139
+ position: sticky;
1140
+ position: -webkit-sticky;
1141
+ bottom: 0;
1142
+ background: white;
1143
+ width: 231px;
1144
+ }
1145
+ }
1146
+ }
1147
+
1148
+ .archive-buttons {
1149
+ display: flex;
1150
+ margin-top: -1rem;
1151
+ width: 95%;
1152
+ }
1153
+
1154
+ .archive-remove {
1155
+ width: 90%;
1156
+ word-break: break-word;
1157
+ }
1158
+ }
1159
+
1160
+ /deep/ .el-tabs__nav-scroll {
1161
+ display: flex;
1162
+ justify-content: stretch;
1163
+ align-items: flex-start;
1164
+ }
1165
+
1166
+ /deep/ .el-tabs__item {
1167
+ padding: 0 1.5rem !important;
1168
+ }
1169
+
1170
+ /deep/ .el-tabs__nav {
1171
+ width: 100% !important;
1172
+ user-select: none;
1173
+ }
1174
+
1175
+ @media (max-width: 1520px) {
1176
+ /deep/ .el-tabs__item {
1177
+ padding: 0 1.2rem !important;
1178
+ }
1179
+ }
1180
+ @media (max-width: 1340px) {
1181
+ /deep/ .el-tabs__item {
1182
+ padding: 0 1rem !important;
1183
+ }
1184
+ }
1185
+ @media (max-width: 1240px) {
1186
+ /deep/ .el-tabs__item {
1187
+ padding: 0 0.8rem !important;
1188
+ }
1189
+ }
1190
+ @media (max-width: 1140px) {
1191
+ /deep/ .el-tabs__item {
1192
+ padding: 0 0.6rem !important;
1193
+ }
1194
+ }
1195
+
1196
+ .readmore {
1197
+ overflow: hidden;
1198
+ text-overflow: ellipsis;
1199
+ display: -webkit-box;
1200
+ -webkit-line-clamp: 3;
1201
+ -webkit-box-orient: vertical;
1202
+ }
1203
+
1204
+ .tab__icon-pane {
1205
+ .img__icon-pane {
1206
+ background-color: #f5f5f5 !important;
1207
+ border-radius: 30%;
1208
+ padding: 7px;
1209
+ height: 2.2rem;
1210
+ width: 2.2rem;
1211
+ margin-bottom: 1rem;
1212
+ }
1213
+ }
1214
+
1215
+ .content-right {
1216
+ width: 25%;
1217
+ }
1218
+
1219
+ .notes-title {
1220
+ font-size: 14px;
1221
+ word-break: break-word;
1222
+ color: #1d364b;
1223
+ font-weight: bold;
1224
+ background-color: white;
1225
+ z-index: 500;
1226
+ }
1227
+
1228
+ .notes-baloon {
1229
+ width: 231px;
1230
+ height: auto;
1231
+ border-radius: 10px 10px 10px 0;
1232
+ background: #eff5fd;
1233
+ &.fullsize {
1234
+ width: 80%!important;
1235
+ min-width: 280px;
1236
+ }
1237
+ }
1238
+ .notes-baloon-melissa {
1239
+ padding: 5px 0;
1240
+ .question-melissa-title{
1241
+ font-size: 12px !important;
1242
+ color:#62778c;
1243
+ span {
1244
+ word-break: break-word;
1245
+ }
1246
+ }
1247
+ .notes-text-melissa {
1248
+ font-size: 0.875rem;
1249
+ color: #1d364b;
1250
+ font-weight: bold;
1251
+ }
1252
+ &.fullsize {
1253
+ width: 80%!important;
1254
+ min-width: 280px;
1255
+ }
1256
+ }
1257
+
1258
+ .notes-text {
1259
+ p {
1260
+ font-size: 13px;
1261
+ color: #62778c;
1262
+ }
1263
+ }
1264
+
1265
+ .notes-date {
1266
+ font-size: 11px;
1267
+ text-align: right;
1268
+
1269
+ color: #8da2b5;
1270
+ top: calc(50% - 17px / 2 - 444.5px);
1271
+ }
1272
+
1273
+ .notes-owner {
1274
+ img {
1275
+ width: 23px;
1276
+ height: 23px;
1277
+ border-radius: 50%;
1278
+ }
1279
+
1280
+ .notes-avatar {
1281
+ width: 23px;
1282
+ height: 23px;
1283
+ border-radius: 50%;
1284
+ background-color: #adb5bd;
1285
+ }
1286
+
1287
+ p {
1288
+ font-size: 13px;
1289
+ font-weight: 600;
1290
+ text-transform: uppercase;
1291
+
1292
+ color: #62778c;
1293
+ }
1294
+ }
1295
+
1296
+ .notes-new {
1297
+ width: 95%;
1298
+ height: 33px;
1299
+
1300
+ background: #f5f5f5;
1301
+ border-radius: 16.5px;
1302
+ border: none;
1303
+
1304
+ outline: 0;
1305
+ }
1306
+
1307
+ .line {
1308
+ width: 221px;
1309
+ height: 0px;
1310
+
1311
+ border: 1px solid #ececec5c;
1312
+ }
1313
+
1314
+ .history {
1315
+ word-break: break-word;
1316
+
1317
+ .history-text {
1318
+ font-size: 13px;
1319
+ color: #62778c;
1320
+ }
1321
+
1322
+ span {
1323
+ font-size: 11px;
1324
+ line-height: 16px;
1325
+
1326
+ color: #8da2b5;
1327
+ }
1328
+ }
1329
+
1330
+ .cursor-disabled {
1331
+ cursor: no-drop;
1332
+ }
1333
+ </style>