@burh/nuxt-core 1.1.14 → 1.1.15
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,232 +1,234 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
68
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
92
|
</template>
|
|
93
93
|
<script>
|
|
94
94
|
import moment from 'moment';
|
|
95
95
|
import 'moment/locale/pt-br';
|
|
96
96
|
import { Select, Option } from 'element-ui';
|
|
97
|
-
import ShareModal from
|
|
97
|
+
import ShareModal from '~/components/burh-ds/Modals/ShareModal.vue';
|
|
98
98
|
import { userSaveJob } from '~/services/user';
|
|
99
99
|
|
|
100
100
|
export default {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
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 'PJ';
|
|
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 if(number == 8) {
|
|
161
|
+
return 'Outros';
|
|
162
|
+
} else {
|
|
163
|
+
return '';
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
getJobsFiltered() {
|
|
168
|
+
return this.jobs.filter((job) => {
|
|
169
|
+
let filterByJobName = (this.selects.jobName != null && this.selects.jobName != '');
|
|
170
|
+
let filterByCityName = (this.selects.city != null && this.selects.city != '');
|
|
171
|
+
let filterByHiringType = (this.selects.hiringType != null && this.selects.hiringType != '');
|
|
172
|
+
|
|
173
|
+
let condition = (filterByCityName ? job.address.city_name == this.selects.city : true)
|
|
172
174
|
&& (filterByJobName ? job.title.toLowerCase().indexOf(this.selects.jobName.toLowerCase()) > -1 : true)
|
|
173
|
-
&& (filterByHiringType ? job.type_hiring == this.selects.hiringType : true)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
175
|
+
&& (filterByHiringType ? job.type_hiring == this.selects.hiringType : true);
|
|
176
|
+
|
|
177
|
+
return condition;
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
data() {
|
|
182
|
+
return {
|
|
183
|
+
baseUrl: process.env.baseAppUrl,
|
|
184
|
+
selects: {
|
|
185
|
+
simple: 'Badges',
|
|
186
|
+
city: '',
|
|
187
|
+
jobName: '',
|
|
188
|
+
hiringType: ''
|
|
189
|
+
},
|
|
190
|
+
cities: [],
|
|
191
|
+
hiringTypes: [],
|
|
192
|
+
modals: {
|
|
193
|
+
modal0: false
|
|
194
|
+
},
|
|
195
|
+
jobLinkShare: '',
|
|
196
|
+
childClickPrevent: false
|
|
197
|
+
|
|
198
|
+
};
|
|
199
|
+
},
|
|
200
|
+
|
|
201
|
+
mounted() {
|
|
202
|
+
let cities = [];
|
|
203
|
+
|
|
204
|
+
for(let job of this.jobs) {
|
|
205
|
+
if(cities.filter((city) => {
|
|
206
|
+
return city.value == job.address.city_name;
|
|
207
|
+
}).length <= 0) {
|
|
208
|
+
cities.push({
|
|
209
|
+
label: job.address.city_name,
|
|
210
|
+
value: job.address.city_name
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
this.cities = cities;
|
|
216
|
+
|
|
217
|
+
let hiringTypes = [];
|
|
218
|
+
|
|
219
|
+
for(let job of this.jobs) {
|
|
220
|
+
if(hiringTypes.filter((hp) => {
|
|
221
|
+
return this.hiringType(hp.value) == this.hiringType(job.type_hiring);
|
|
222
|
+
}).length <= 0) {
|
|
223
|
+
hiringTypes.push({
|
|
224
|
+
label: this.hiringType(job.type_hiring),
|
|
225
|
+
value: job.type_hiring
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
this.hiringTypes = hiringTypes;
|
|
231
|
+
}
|
|
230
232
|
};
|
|
231
233
|
</script>
|
|
232
234
|
<style lang="scss">
|