@burh/nuxt-core 1.0.291 → 1.0.292
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/sass/burh-ds/atoms/_buttons.scss +219 -219
- package/assets/sass/burh-ds/content/_interface-spa.scss +306 -306
- package/assets/sass/burh-ds/content/_main-content.scss +25 -25
- package/assets/sass/burh-ds/variables/_colors.scss +350 -350
- package/components/argon-core/BaseDropdown.vue +114 -114
- package/components/argon-core/BaseProgress.vue +121 -121
- package/components/argon-core/Modal.vue +184 -184
- package/components/burh-ds/Cards/FeatureBusinessCard.vue +74 -74
- package/components/burh-ds/Cards/PerformanceCard.vue +81 -81
- package/components/burh-ds/Cards/RecruitmentCard.vue +214 -214
- package/components/burh-ds/Collapse/DefaultCollapse.vue +70 -70
- package/components/burh-ds/Curriculum/UserCurriculum/UserCvMiddle.vue +497 -496
- package/components/burh-ds/Curriculum/UserCurriculum/index.vue +245 -245
- package/components/burh-ds/Dropdown/JobStatusDropdown.vue +145 -145
- package/components/burh-ds/Headings/AppHeader.vue +162 -162
- package/components/burh-ds/Inputs/SearchInput.vue +64 -64
- package/components/burh-ds/Lists/VagasSimple.vue +404 -404
- package/components/burh-ds/Loadings/LoadingFullPage.vue +68 -68
- package/components/burh-ds/Loads/LoadingBar.vue +83 -83
- package/components/burh-ds/Modals/MobileModal.vue +65 -65
- package/components/burh-ds/Modals/NewUserModal.vue +87 -87
- package/components/burh-ds/Modals/SharedModal.vue +270 -270
- package/components/burh-ds/Skeleton/BaseCardUniversity.vue +79 -79
- package/components/burh-ds/Skeleton/BaseCardUser.vue +84 -84
- package/components/burh-ds/Skeleton/Cards.vue +86 -86
- package/components/burh-ds/Skeleton/Home.vue +100 -100
- package/components/burh-ds/Skeleton/RecruitmentCard.vue +169 -169
- package/components/burh-ds/Skeleton/SkeletonAnimate.vue +96 -96
- package/components/layouts/burh-ds/footer/ProductsFooter.vue +330 -330
- package/nuxt.config.js +206 -206
- package/package.json +1 -1
|
@@ -1,404 +1,404 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<div class="list-simple">
|
|
3
|
-
<!-- faz as coisas aqui -->
|
|
4
|
-
<div class="text-center">
|
|
5
|
-
<h3>Oportunidades abertas recentemente</h3>
|
|
6
|
-
<h6>Alinhados a estratégia de investir nos melhores profissionais para o alto desempenho das equipes e excelência em nosso processos voltados ao Sucesso de Nossos Clientes, é com grande satisfação que lhe convidamos a fazer parte do time {{companyName}}.</h6>
|
|
7
|
-
</div>
|
|
8
|
-
<hr />
|
|
9
|
-
<div class="row">
|
|
10
|
-
<div class="col-12 col-lg-4">
|
|
11
|
-
<base-input>
|
|
12
|
-
<el-select
|
|
13
|
-
v-model="selects.city"
|
|
14
|
-
filterable
|
|
15
|
-
clearable
|
|
16
|
-
placeholder="Filtrar cidade"
|
|
17
|
-
class="select-primary">
|
|
18
|
-
<el-option v-for="option in cities"
|
|
19
|
-
:key="option.label"
|
|
20
|
-
:label="option.label"
|
|
21
|
-
:value="option.value">
|
|
22
|
-
</el-option>
|
|
23
|
-
</el-select>
|
|
24
|
-
</base-input>
|
|
25
|
-
</div>
|
|
26
|
-
<div class="col-12 col-lg-4">
|
|
27
|
-
<base-input placeholder="Nome da vaga" v-model="selects.jobName"></base-input>
|
|
28
|
-
</div>
|
|
29
|
-
<div class="col-12 col-lg-4">
|
|
30
|
-
<base-input>
|
|
31
|
-
<el-select
|
|
32
|
-
v-model="selects.hiringType"
|
|
33
|
-
filterable
|
|
34
|
-
clearable=""
|
|
35
|
-
placeholder="Tipo de contratação"
|
|
36
|
-
class="select-primary">
|
|
37
|
-
<el-option v-for="option in hiringTypes"
|
|
38
|
-
:key="option.label"
|
|
39
|
-
:label="option.label"
|
|
40
|
-
:value="option.value">
|
|
41
|
-
</el-option>
|
|
42
|
-
</el-select>
|
|
43
|
-
</base-input>
|
|
44
|
-
</div>
|
|
45
|
-
</div>
|
|
46
|
-
<table class="table table--card">
|
|
47
|
-
<thead>
|
|
48
|
-
<tr>
|
|
49
|
-
<th width="40%">Nome da Vaga</th>
|
|
50
|
-
<th width="20%">Cidade</th>
|
|
51
|
-
<th width="20%">Tipo de Contratação</th>
|
|
52
|
-
<th width="20%">Ações</th>
|
|
53
|
-
</tr>
|
|
54
|
-
</thead>
|
|
55
|
-
<tr class="" v-for="job in getJobsFiltered()" @click="redirectToJob(job)" v-bind:key="job.job_id" >
|
|
56
|
-
<td class="job-name">
|
|
57
|
-
<div class="mobile-content">
|
|
58
|
-
<span class="avatar avatar-xl rounded-circle table-icon">
|
|
59
|
-
<img alt="Laponia Veiculos" :src="companyLogo">
|
|
60
|
-
</span>
|
|
61
|
-
<ul class="list-inline">
|
|
62
|
-
<!-- <li class="list-inline-item" v-on:click.prevent="callSaveJob(job.job_id)"><font-awesome-icon :icon="[!fullHeart ? 'far' : 'fas', 'heart']" class="mr-2"/></li> -->
|
|
63
|
-
<li class="list-inline-item" v-on:click.prevent="callShareJob(job.job_id)"><font-awesome-icon :icon="['fas', 'share']" class="mr-0"/></li>
|
|
64
|
-
</ul>
|
|
65
|
-
<div class="text-uppercase">{{companyName}}</div>
|
|
66
|
-
</div>
|
|
67
|
-
<span>{{job.title}} </span>
|
|
68
|
-
|
|
69
|
-
<badge tag="span" type="primary" class="bg-lighter" v-if="job.handicapped == 1">
|
|
70
|
-
<font-awesome-icon :icon="['fas', 'wheelchair']" class=""/>
|
|
71
|
-
</badge>
|
|
72
|
-
</td>
|
|
73
|
-
<td class="job-city">{{job.address.city_name}}</td>
|
|
74
|
-
<td class="job-type">{{hiringType(job.type_hiring)}}
|
|
75
|
-
<div class="mobile-content">
|
|
76
|
-
<badge rounded tag="span" type="primary" class="bg-lighter">{{ fromNow(job.starting_date) }}</badge>
|
|
77
|
-
</div>
|
|
78
|
-
</td>
|
|
79
|
-
<td class="text-right"><a :href="baseUrl + '/' +job.link" target="_blank" class="btn btn-outline-default">Ver vaga</a></td>
|
|
80
|
-
</tr>
|
|
81
|
-
|
|
82
|
-
<tr v-if="getJobsFiltered().length <= 0">
|
|
83
|
-
<td colspan="4" class="text-center">Nenhuma vaga encontrada</td>
|
|
84
|
-
</tr>
|
|
85
|
-
</table>
|
|
86
|
-
<share-modal
|
|
87
|
-
:show="modals"
|
|
88
|
-
:url="jobLinkShare"
|
|
89
|
-
/>
|
|
90
|
-
<slot></slot>
|
|
91
|
-
</div>
|
|
92
|
-
</template>
|
|
93
|
-
<script>
|
|
94
|
-
import moment from 'moment';
|
|
95
|
-
import 'moment/locale/pt-br';
|
|
96
|
-
import { Select, Option } from 'element-ui';
|
|
97
|
-
import ShareModal from "~/components/burh-ds/Modals/ShareModal.vue";
|
|
98
|
-
import { userSaveJob } from '~/services/user';
|
|
99
|
-
|
|
100
|
-
export default {
|
|
101
|
-
name: "list-vagas",
|
|
102
|
-
components: {
|
|
103
|
-
[Select.name]: Select,
|
|
104
|
-
[Option.name]: Option,
|
|
105
|
-
ShareModal
|
|
106
|
-
},
|
|
107
|
-
props: {
|
|
108
|
-
sm: Boolean,
|
|
109
|
-
md: Boolean,
|
|
110
|
-
img: String,
|
|
111
|
-
bg: String,
|
|
112
|
-
fullHeart: {
|
|
113
|
-
type: Boolean,
|
|
114
|
-
default: false
|
|
115
|
-
},
|
|
116
|
-
jobs: {
|
|
117
|
-
type: Array,
|
|
118
|
-
default: function() { return [] }
|
|
119
|
-
},
|
|
120
|
-
companyName: String,
|
|
121
|
-
companyLogo: String
|
|
122
|
-
},
|
|
123
|
-
methods: {
|
|
124
|
-
async callSaveJob(id) {
|
|
125
|
-
this.childClickPrevent = true;
|
|
126
|
-
let res = await userSaveJob(id);
|
|
127
|
-
|
|
128
|
-
},
|
|
129
|
-
|
|
130
|
-
callShareJob(jobId){
|
|
131
|
-
this.childClickPrevent = true;
|
|
132
|
-
this.jobLinkShare = process.env.baseAppUrl + '/vagas/' + jobId;
|
|
133
|
-
this.modals.modal0 = true;
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
redirectToJob(job) {
|
|
137
|
-
if(!this.childClickPrevent){
|
|
138
|
-
if(window.innerWidth <= 768) {
|
|
139
|
-
window.open(this.baseUrl + '/' + job.link);
|
|
140
|
-
}
|
|
141
|
-
}else{
|
|
142
|
-
this.childClickPrevent = false;
|
|
143
|
-
}
|
|
144
|
-
},
|
|
145
|
-
fromNow(date, format = "YYYY-MM-DD") {
|
|
146
|
-
return moment(date, format).locale('pt-BR').fromNow()
|
|
147
|
-
},
|
|
148
|
-
|
|
149
|
-
hiringType(number) {
|
|
150
|
-
if(number == 2) {
|
|
151
|
-
return "CLT";
|
|
152
|
-
} else if(number == 3) {
|
|
153
|
-
return "CNPJ";
|
|
154
|
-
} else if(number == 4) {
|
|
155
|
-
return "Estágio";
|
|
156
|
-
} else if(number == 5) {
|
|
157
|
-
return 'RPA';
|
|
158
|
-
} else if(number == 6) {
|
|
159
|
-
return 'Temporário';
|
|
160
|
-
} else {
|
|
161
|
-
return '';
|
|
162
|
-
}
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
getJobsFiltered() {
|
|
166
|
-
return this.jobs.filter((job) => {
|
|
167
|
-
let filterByJobName = (this.selects.jobName != null && this.selects.jobName != '');
|
|
168
|
-
let filterByCityName = (this.selects.city != null && this.selects.city != '');
|
|
169
|
-
let filterByHiringType = (this.selects.hiringType != null && this.selects.hiringType != '');
|
|
170
|
-
|
|
171
|
-
let condition = (filterByCityName ? job.address.city_name == this.selects.city : true)
|
|
172
|
-
&& (filterByJobName ? job.title.toLowerCase().indexOf(this.selects.jobName.toLowerCase()) > -1 : true)
|
|
173
|
-
&& (filterByHiringType ? job.type_hiring == this.selects.hiringType : true)
|
|
174
|
-
|
|
175
|
-
return condition;
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
data() {
|
|
180
|
-
return {
|
|
181
|
-
baseUrl: process.env.baseAppUrl,
|
|
182
|
-
selects: {
|
|
183
|
-
simple: 'Badges',
|
|
184
|
-
city: '',
|
|
185
|
-
jobName: '',
|
|
186
|
-
hiringType: ''
|
|
187
|
-
},
|
|
188
|
-
cities: [],
|
|
189
|
-
hiringTypes: [],
|
|
190
|
-
modals: {
|
|
191
|
-
modal0: false
|
|
192
|
-
},
|
|
193
|
-
jobLinkShare: '',
|
|
194
|
-
childClickPrevent: false
|
|
195
|
-
|
|
196
|
-
}
|
|
197
|
-
},
|
|
198
|
-
|
|
199
|
-
mounted() {
|
|
200
|
-
let cities = [];
|
|
201
|
-
|
|
202
|
-
for(let job of this.jobs) {
|
|
203
|
-
if(cities.filter((city) => {
|
|
204
|
-
return city.value == job.address.city_name
|
|
205
|
-
}).length <= 0) {
|
|
206
|
-
cities.push({
|
|
207
|
-
label: job.address.city_name,
|
|
208
|
-
value: job.address.city_name
|
|
209
|
-
})
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
this.cities = cities;
|
|
214
|
-
|
|
215
|
-
let hiringTypes = [];
|
|
216
|
-
|
|
217
|
-
for(let job of this.jobs) {
|
|
218
|
-
if(hiringTypes.filter((hp) => {
|
|
219
|
-
return this.hiringType(hp.value) == this.hiringType(job.type_hiring)
|
|
220
|
-
}).length <= 0) {
|
|
221
|
-
hiringTypes.push({
|
|
222
|
-
label: this.hiringType(job.type_hiring),
|
|
223
|
-
value: job.type_hiring
|
|
224
|
-
})
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
this.hiringTypes = hiringTypes;
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
</script>
|
|
232
|
-
<style lang="scss">
|
|
233
|
-
|
|
234
|
-
.list-simple {
|
|
235
|
-
@media screen and (min-width: 1440px) {
|
|
236
|
-
max-width: 1440px;
|
|
237
|
-
margin: 0 auto;
|
|
238
|
-
}
|
|
239
|
-
.avatar-xl{
|
|
240
|
-
border: 1px solid #E5E5E5;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
.table--card {
|
|
245
|
-
thead {
|
|
246
|
-
display: none;
|
|
247
|
-
height: 0;
|
|
248
|
-
border: 0;
|
|
249
|
-
overflow: hidden;
|
|
250
|
-
|
|
251
|
-
th {
|
|
252
|
-
border-top: 0;
|
|
253
|
-
opacity: 0;
|
|
254
|
-
}
|
|
255
|
-
@media screen and (min-width: 768px) {
|
|
256
|
-
display: table-header-group;
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
.mobile-content {
|
|
260
|
-
@media screen and (min-width: 768px) {
|
|
261
|
-
display: none;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
> tr {
|
|
265
|
-
position: relative;
|
|
266
|
-
display: block;
|
|
267
|
-
margin: 1rem auto;
|
|
268
|
-
|
|
269
|
-
border: 1px solid #E5E5E5;
|
|
270
|
-
border-radius: 7px;
|
|
271
|
-
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15);
|
|
272
|
-
|
|
273
|
-
@media screen and (min-width: 768px) {
|
|
274
|
-
display: table-row;
|
|
275
|
-
margin-bottom: initial;
|
|
276
|
-
padding-top: initial;
|
|
277
|
-
|
|
278
|
-
border: 0;
|
|
279
|
-
border-radius: 0;
|
|
280
|
-
box-shadow: none;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
&:first-child {
|
|
284
|
-
td {
|
|
285
|
-
border-top: 0;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
&:last-child {
|
|
290
|
-
td:last-child {
|
|
291
|
-
border-bottom: 1px solid #E5E5E5;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
@media screen and (min-width: 768px) {
|
|
295
|
-
td {
|
|
296
|
-
border-bottom: 1px solid #E5E5E5;
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
& > a:first-child {
|
|
302
|
-
position: absolute;
|
|
303
|
-
top: 1.5rem;
|
|
304
|
-
left: 1.5rem;
|
|
305
|
-
border: 1px solid #E5E5E5;
|
|
306
|
-
|
|
307
|
-
@media screen and (min-width: 768px) {
|
|
308
|
-
display: none;
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
ul {
|
|
313
|
-
position: absolute;
|
|
314
|
-
top: 2.75rem;
|
|
315
|
-
right: 2rem;
|
|
316
|
-
color: #4460F4;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
li {
|
|
320
|
-
font-size: 1.25rem;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
}
|
|
324
|
-
td {
|
|
325
|
-
display: inline-block;
|
|
326
|
-
vertical-align: middle;
|
|
327
|
-
width: 100%;
|
|
328
|
-
white-space: normal;
|
|
329
|
-
font-size: 1rem;
|
|
330
|
-
color: #394550;
|
|
331
|
-
border-top-width: 0;
|
|
332
|
-
|
|
333
|
-
@media screen and (min-width: 768px) {
|
|
334
|
-
display: table-cell;
|
|
335
|
-
width: initial;
|
|
336
|
-
border-top-width: 1px;
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
&:first-child {
|
|
340
|
-
div{
|
|
341
|
-
div{
|
|
342
|
-
margin-top: 1rem;
|
|
343
|
-
font-size: 0.9rem;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
padding-bottom: 0;
|
|
347
|
-
font-size: 1.25rem;
|
|
348
|
-
@media screen and (min-width: 768px) {
|
|
349
|
-
padding-bottom: 1rem;
|
|
350
|
-
font-size: initial;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
&:nth-child(2){
|
|
355
|
-
padding-top: 0;
|
|
356
|
-
padding-bottom: 0;
|
|
357
|
-
color: #668EB5;
|
|
358
|
-
@media screen and (min-width: 768px) {
|
|
359
|
-
padding-top: 1rem;
|
|
360
|
-
padding-bottom: 1rem;
|
|
361
|
-
color: #394550;
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
&:nth-child(3){
|
|
366
|
-
padding-top: 0;
|
|
367
|
-
div {
|
|
368
|
-
span {
|
|
369
|
-
margin-top: 2rem;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
@media screen and (min-width: 768px) {
|
|
374
|
-
padding-top: 1rem;
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
&:last-child {
|
|
379
|
-
display: none;
|
|
380
|
-
@media screen and (min-width: 768px) {
|
|
381
|
-
display: table-cell;
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
.btn {
|
|
386
|
-
display: block;
|
|
387
|
-
|
|
388
|
-
@media screen and (min-width: 768px) {
|
|
389
|
-
display: inline-block;
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
span {
|
|
394
|
-
svg {
|
|
395
|
-
font-size: 0.83rem;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
.btn {
|
|
401
|
-
margin: 0;
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
</style>
|
|
1
|
+
<template>
|
|
2
|
+
<div class="list-simple">
|
|
3
|
+
<!-- faz as coisas aqui -->
|
|
4
|
+
<div class="text-center">
|
|
5
|
+
<h3>Oportunidades abertas recentemente</h3>
|
|
6
|
+
<h6>Alinhados a estratégia de investir nos melhores profissionais para o alto desempenho das equipes e excelência em nosso processos voltados ao Sucesso de Nossos Clientes, é com grande satisfação que lhe convidamos a fazer parte do time {{companyName}}.</h6>
|
|
7
|
+
</div>
|
|
8
|
+
<hr />
|
|
9
|
+
<div class="row">
|
|
10
|
+
<div class="col-12 col-lg-4">
|
|
11
|
+
<base-input>
|
|
12
|
+
<el-select
|
|
13
|
+
v-model="selects.city"
|
|
14
|
+
filterable
|
|
15
|
+
clearable
|
|
16
|
+
placeholder="Filtrar cidade"
|
|
17
|
+
class="select-primary">
|
|
18
|
+
<el-option v-for="option in cities"
|
|
19
|
+
:key="option.label"
|
|
20
|
+
:label="option.label"
|
|
21
|
+
:value="option.value">
|
|
22
|
+
</el-option>
|
|
23
|
+
</el-select>
|
|
24
|
+
</base-input>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="col-12 col-lg-4">
|
|
27
|
+
<base-input placeholder="Nome da vaga" v-model="selects.jobName"></base-input>
|
|
28
|
+
</div>
|
|
29
|
+
<div class="col-12 col-lg-4">
|
|
30
|
+
<base-input>
|
|
31
|
+
<el-select
|
|
32
|
+
v-model="selects.hiringType"
|
|
33
|
+
filterable
|
|
34
|
+
clearable=""
|
|
35
|
+
placeholder="Tipo de contratação"
|
|
36
|
+
class="select-primary">
|
|
37
|
+
<el-option v-for="option in hiringTypes"
|
|
38
|
+
:key="option.label"
|
|
39
|
+
:label="option.label"
|
|
40
|
+
:value="option.value">
|
|
41
|
+
</el-option>
|
|
42
|
+
</el-select>
|
|
43
|
+
</base-input>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
<table class="table table--card">
|
|
47
|
+
<thead>
|
|
48
|
+
<tr>
|
|
49
|
+
<th width="40%">Nome da Vaga</th>
|
|
50
|
+
<th width="20%">Cidade</th>
|
|
51
|
+
<th width="20%">Tipo de Contratação</th>
|
|
52
|
+
<th width="20%">Ações</th>
|
|
53
|
+
</tr>
|
|
54
|
+
</thead>
|
|
55
|
+
<tr class="" v-for="job in getJobsFiltered()" @click="redirectToJob(job)" v-bind:key="job.job_id" >
|
|
56
|
+
<td class="job-name">
|
|
57
|
+
<div class="mobile-content">
|
|
58
|
+
<span class="avatar avatar-xl rounded-circle table-icon">
|
|
59
|
+
<img alt="Laponia Veiculos" :src="companyLogo">
|
|
60
|
+
</span>
|
|
61
|
+
<ul class="list-inline">
|
|
62
|
+
<!-- <li class="list-inline-item" v-on:click.prevent="callSaveJob(job.job_id)"><font-awesome-icon :icon="[!fullHeart ? 'far' : 'fas', 'heart']" class="mr-2"/></li> -->
|
|
63
|
+
<li class="list-inline-item" v-on:click.prevent="callShareJob(job.job_id)"><font-awesome-icon :icon="['fas', 'share']" class="mr-0"/></li>
|
|
64
|
+
</ul>
|
|
65
|
+
<div class="text-uppercase">{{companyName}}</div>
|
|
66
|
+
</div>
|
|
67
|
+
<span>{{job.title}} </span>
|
|
68
|
+
|
|
69
|
+
<badge tag="span" type="primary" class="bg-lighter" v-if="job.handicapped == 1">
|
|
70
|
+
<font-awesome-icon :icon="['fas', 'wheelchair']" class=""/>
|
|
71
|
+
</badge>
|
|
72
|
+
</td>
|
|
73
|
+
<td class="job-city">{{job.address.city_name}}</td>
|
|
74
|
+
<td class="job-type">{{hiringType(job.type_hiring)}}
|
|
75
|
+
<div class="mobile-content">
|
|
76
|
+
<badge rounded tag="span" type="primary" class="bg-lighter">{{ fromNow(job.starting_date) }}</badge>
|
|
77
|
+
</div>
|
|
78
|
+
</td>
|
|
79
|
+
<td class="text-right"><a :href="baseUrl + '/' +job.link" target="_blank" class="btn btn-outline-default">Ver vaga</a></td>
|
|
80
|
+
</tr>
|
|
81
|
+
|
|
82
|
+
<tr v-if="getJobsFiltered().length <= 0">
|
|
83
|
+
<td colspan="4" class="text-center">Nenhuma vaga encontrada</td>
|
|
84
|
+
</tr>
|
|
85
|
+
</table>
|
|
86
|
+
<share-modal
|
|
87
|
+
:show="modals"
|
|
88
|
+
:url="jobLinkShare"
|
|
89
|
+
/>
|
|
90
|
+
<slot></slot>
|
|
91
|
+
</div>
|
|
92
|
+
</template>
|
|
93
|
+
<script>
|
|
94
|
+
import moment from 'moment';
|
|
95
|
+
import 'moment/locale/pt-br';
|
|
96
|
+
import { Select, Option } from 'element-ui';
|
|
97
|
+
import ShareModal from "~/components/burh-ds/Modals/ShareModal.vue";
|
|
98
|
+
import { userSaveJob } from '~/services/user';
|
|
99
|
+
|
|
100
|
+
export default {
|
|
101
|
+
name: "list-vagas",
|
|
102
|
+
components: {
|
|
103
|
+
[Select.name]: Select,
|
|
104
|
+
[Option.name]: Option,
|
|
105
|
+
ShareModal
|
|
106
|
+
},
|
|
107
|
+
props: {
|
|
108
|
+
sm: Boolean,
|
|
109
|
+
md: Boolean,
|
|
110
|
+
img: String,
|
|
111
|
+
bg: String,
|
|
112
|
+
fullHeart: {
|
|
113
|
+
type: Boolean,
|
|
114
|
+
default: false
|
|
115
|
+
},
|
|
116
|
+
jobs: {
|
|
117
|
+
type: Array,
|
|
118
|
+
default: function() { return [] }
|
|
119
|
+
},
|
|
120
|
+
companyName: String,
|
|
121
|
+
companyLogo: String
|
|
122
|
+
},
|
|
123
|
+
methods: {
|
|
124
|
+
async callSaveJob(id) {
|
|
125
|
+
this.childClickPrevent = true;
|
|
126
|
+
let res = await userSaveJob(id);
|
|
127
|
+
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
callShareJob(jobId){
|
|
131
|
+
this.childClickPrevent = true;
|
|
132
|
+
this.jobLinkShare = process.env.baseAppUrl + '/vagas/' + jobId;
|
|
133
|
+
this.modals.modal0 = true;
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
redirectToJob(job) {
|
|
137
|
+
if(!this.childClickPrevent){
|
|
138
|
+
if(window.innerWidth <= 768) {
|
|
139
|
+
window.open(this.baseUrl + '/' + job.link);
|
|
140
|
+
}
|
|
141
|
+
}else{
|
|
142
|
+
this.childClickPrevent = false;
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
fromNow(date, format = "YYYY-MM-DD") {
|
|
146
|
+
return moment(date, format).locale('pt-BR').fromNow()
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
hiringType(number) {
|
|
150
|
+
if(number == 2) {
|
|
151
|
+
return "CLT";
|
|
152
|
+
} else if(number == 3) {
|
|
153
|
+
return "CNPJ";
|
|
154
|
+
} else if(number == 4) {
|
|
155
|
+
return "Estágio";
|
|
156
|
+
} else if(number == 5) {
|
|
157
|
+
return 'RPA';
|
|
158
|
+
} else if(number == 6) {
|
|
159
|
+
return 'Temporário';
|
|
160
|
+
} else {
|
|
161
|
+
return '';
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
getJobsFiltered() {
|
|
166
|
+
return this.jobs.filter((job) => {
|
|
167
|
+
let filterByJobName = (this.selects.jobName != null && this.selects.jobName != '');
|
|
168
|
+
let filterByCityName = (this.selects.city != null && this.selects.city != '');
|
|
169
|
+
let filterByHiringType = (this.selects.hiringType != null && this.selects.hiringType != '');
|
|
170
|
+
|
|
171
|
+
let condition = (filterByCityName ? job.address.city_name == this.selects.city : true)
|
|
172
|
+
&& (filterByJobName ? job.title.toLowerCase().indexOf(this.selects.jobName.toLowerCase()) > -1 : true)
|
|
173
|
+
&& (filterByHiringType ? job.type_hiring == this.selects.hiringType : true)
|
|
174
|
+
|
|
175
|
+
return condition;
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
data() {
|
|
180
|
+
return {
|
|
181
|
+
baseUrl: process.env.baseAppUrl,
|
|
182
|
+
selects: {
|
|
183
|
+
simple: 'Badges',
|
|
184
|
+
city: '',
|
|
185
|
+
jobName: '',
|
|
186
|
+
hiringType: ''
|
|
187
|
+
},
|
|
188
|
+
cities: [],
|
|
189
|
+
hiringTypes: [],
|
|
190
|
+
modals: {
|
|
191
|
+
modal0: false
|
|
192
|
+
},
|
|
193
|
+
jobLinkShare: '',
|
|
194
|
+
childClickPrevent: false
|
|
195
|
+
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
|
|
199
|
+
mounted() {
|
|
200
|
+
let cities = [];
|
|
201
|
+
|
|
202
|
+
for(let job of this.jobs) {
|
|
203
|
+
if(cities.filter((city) => {
|
|
204
|
+
return city.value == job.address.city_name
|
|
205
|
+
}).length <= 0) {
|
|
206
|
+
cities.push({
|
|
207
|
+
label: job.address.city_name,
|
|
208
|
+
value: job.address.city_name
|
|
209
|
+
})
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
this.cities = cities;
|
|
214
|
+
|
|
215
|
+
let hiringTypes = [];
|
|
216
|
+
|
|
217
|
+
for(let job of this.jobs) {
|
|
218
|
+
if(hiringTypes.filter((hp) => {
|
|
219
|
+
return this.hiringType(hp.value) == this.hiringType(job.type_hiring)
|
|
220
|
+
}).length <= 0) {
|
|
221
|
+
hiringTypes.push({
|
|
222
|
+
label: this.hiringType(job.type_hiring),
|
|
223
|
+
value: job.type_hiring
|
|
224
|
+
})
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
this.hiringTypes = hiringTypes;
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
</script>
|
|
232
|
+
<style lang="scss">
|
|
233
|
+
|
|
234
|
+
.list-simple {
|
|
235
|
+
@media screen and (min-width: 1440px) {
|
|
236
|
+
max-width: 1440px;
|
|
237
|
+
margin: 0 auto;
|
|
238
|
+
}
|
|
239
|
+
.avatar-xl{
|
|
240
|
+
border: 1px solid #E5E5E5;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.table--card {
|
|
245
|
+
thead {
|
|
246
|
+
display: none;
|
|
247
|
+
height: 0;
|
|
248
|
+
border: 0;
|
|
249
|
+
overflow: hidden;
|
|
250
|
+
|
|
251
|
+
th {
|
|
252
|
+
border-top: 0;
|
|
253
|
+
opacity: 0;
|
|
254
|
+
}
|
|
255
|
+
@media screen and (min-width: 768px) {
|
|
256
|
+
display: table-header-group;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
.mobile-content {
|
|
260
|
+
@media screen and (min-width: 768px) {
|
|
261
|
+
display: none;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
> tr {
|
|
265
|
+
position: relative;
|
|
266
|
+
display: block;
|
|
267
|
+
margin: 1rem auto;
|
|
268
|
+
|
|
269
|
+
border: 1px solid #E5E5E5;
|
|
270
|
+
border-radius: 7px;
|
|
271
|
+
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.15);
|
|
272
|
+
|
|
273
|
+
@media screen and (min-width: 768px) {
|
|
274
|
+
display: table-row;
|
|
275
|
+
margin-bottom: initial;
|
|
276
|
+
padding-top: initial;
|
|
277
|
+
|
|
278
|
+
border: 0;
|
|
279
|
+
border-radius: 0;
|
|
280
|
+
box-shadow: none;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
&:first-child {
|
|
284
|
+
td {
|
|
285
|
+
border-top: 0;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
&:last-child {
|
|
290
|
+
td:last-child {
|
|
291
|
+
border-bottom: 1px solid #E5E5E5;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@media screen and (min-width: 768px) {
|
|
295
|
+
td {
|
|
296
|
+
border-bottom: 1px solid #E5E5E5;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
& > a:first-child {
|
|
302
|
+
position: absolute;
|
|
303
|
+
top: 1.5rem;
|
|
304
|
+
left: 1.5rem;
|
|
305
|
+
border: 1px solid #E5E5E5;
|
|
306
|
+
|
|
307
|
+
@media screen and (min-width: 768px) {
|
|
308
|
+
display: none;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
ul {
|
|
313
|
+
position: absolute;
|
|
314
|
+
top: 2.75rem;
|
|
315
|
+
right: 2rem;
|
|
316
|
+
color: #4460F4;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
li {
|
|
320
|
+
font-size: 1.25rem;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
}
|
|
324
|
+
td {
|
|
325
|
+
display: inline-block;
|
|
326
|
+
vertical-align: middle;
|
|
327
|
+
width: 100%;
|
|
328
|
+
white-space: normal;
|
|
329
|
+
font-size: 1rem;
|
|
330
|
+
color: #394550;
|
|
331
|
+
border-top-width: 0;
|
|
332
|
+
|
|
333
|
+
@media screen and (min-width: 768px) {
|
|
334
|
+
display: table-cell;
|
|
335
|
+
width: initial;
|
|
336
|
+
border-top-width: 1px;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
&:first-child {
|
|
340
|
+
div{
|
|
341
|
+
div{
|
|
342
|
+
margin-top: 1rem;
|
|
343
|
+
font-size: 0.9rem;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
padding-bottom: 0;
|
|
347
|
+
font-size: 1.25rem;
|
|
348
|
+
@media screen and (min-width: 768px) {
|
|
349
|
+
padding-bottom: 1rem;
|
|
350
|
+
font-size: initial;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
&:nth-child(2){
|
|
355
|
+
padding-top: 0;
|
|
356
|
+
padding-bottom: 0;
|
|
357
|
+
color: #668EB5;
|
|
358
|
+
@media screen and (min-width: 768px) {
|
|
359
|
+
padding-top: 1rem;
|
|
360
|
+
padding-bottom: 1rem;
|
|
361
|
+
color: #394550;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
&:nth-child(3){
|
|
366
|
+
padding-top: 0;
|
|
367
|
+
div {
|
|
368
|
+
span {
|
|
369
|
+
margin-top: 2rem;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
@media screen and (min-width: 768px) {
|
|
374
|
+
padding-top: 1rem;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
&:last-child {
|
|
379
|
+
display: none;
|
|
380
|
+
@media screen and (min-width: 768px) {
|
|
381
|
+
display: table-cell;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.btn {
|
|
386
|
+
display: block;
|
|
387
|
+
|
|
388
|
+
@media screen and (min-width: 768px) {
|
|
389
|
+
display: inline-block;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
span {
|
|
394
|
+
svg {
|
|
395
|
+
font-size: 0.83rem;
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
}
|
|
400
|
+
.btn {
|
|
401
|
+
margin: 0;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
</style>
|