@burh/nuxt-core 1.1.20 → 1.1.21

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>{{ $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>
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>