|
|
@@ -1,14 +1,14 @@
|
|
|
<template>
|
|
|
<LayoutContainer>
|
|
|
<div
|
|
|
- v-for="(job, jobIndex) in jobs"
|
|
|
- :key="jobIndex"
|
|
|
+ v-for="(job, index) in jobs"
|
|
|
+ :key="index"
|
|
|
class="mission-container"
|
|
|
>
|
|
|
<!-- Première ligne -->
|
|
|
<v-row class="announcement-title ml-6 mr-6">
|
|
|
<div class="title-job">
|
|
|
- {{ job.title }}
|
|
|
+ {{ job.title }} - {{ job.contractType }}
|
|
|
</div>
|
|
|
<v-btn class="btn-more" text> En savoir plus </v-btn>
|
|
|
</v-row>
|
|
|
@@ -19,7 +19,7 @@
|
|
|
<i class="fas fa-map-marker"></i>
|
|
|
</v-icon>
|
|
|
<div class="location">
|
|
|
- {{ job.location }}
|
|
|
+ {{ job.city }}
|
|
|
</div>
|
|
|
</v-row>
|
|
|
</div>
|
|
|
@@ -40,40 +40,80 @@
|
|
|
</LayoutContainer>
|
|
|
</template>
|
|
|
|
|
|
-<script setup>
|
|
|
+<script setup lang="ts">
|
|
|
import { ref } from "vue";
|
|
|
-const jobs = ref([
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- image: "/images/Opentalent.png",
|
|
|
- title: "Assistant(e) Commercial(e) h/f",
|
|
|
- contractType: "CDI",
|
|
|
- location: "Paris",
|
|
|
- description:
|
|
|
- "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
- properties: ["CDI", "Paris", "Commercial"],
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- image: "/images/Opentalent.png",
|
|
|
- title: "Assistant(e) Commercial(e) h/f",
|
|
|
- contractType: "CDI",
|
|
|
- location: "Paris",
|
|
|
- description:
|
|
|
- "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
- properties: ["CDI", "Paris", "Commercial"],
|
|
|
- },
|
|
|
- {
|
|
|
- id: 1,
|
|
|
- image: "/images/Opentalent.png",
|
|
|
- title: "Assistant(e) Commercial(e) h/f",
|
|
|
- contractType: "CDI",
|
|
|
- location: "Paris",
|
|
|
- description:
|
|
|
- "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
- properties: ["CDI", "Paris", "Commercial"],
|
|
|
- },
|
|
|
-]);
|
|
|
+import { useMaestroRequestService } from "~/composables/useMaestroRequestService";
|
|
|
+const { apiRequestService } = useMaestroRequestService();
|
|
|
+
|
|
|
+const query = computed(() => {
|
|
|
+ const queryParams: { page: number; type?: string; [key: string]: number | string } = {
|
|
|
+ page: page.value,
|
|
|
+ type: 'ENTREPRISE'
|
|
|
+ };
|
|
|
+
|
|
|
+ return queryParams;
|
|
|
+});
|
|
|
+// Base URL for API requests
|
|
|
+const totalItems = ref(0);
|
|
|
+const config = useRuntimeConfig();
|
|
|
+const baseUrl = `${config.public.apiBaseUrl}/api/job-postings`;
|
|
|
+
|
|
|
+const page: Ref<number> = ref(1);
|
|
|
+const itemsPerPage: Ref<number> = ref(10);
|
|
|
+const { t } = useI18n();
|
|
|
+const {
|
|
|
+ data: jobs = [],
|
|
|
+ pending,
|
|
|
+ refresh,
|
|
|
+} = useLazyAsyncData("files", async () => {
|
|
|
+ const response = await apiRequestService.get(baseUrl, query.value);
|
|
|
+ const collection = response["hydra:member"];
|
|
|
+
|
|
|
+ // Obtenir la date actuelle
|
|
|
+ const currentDate = new Date();
|
|
|
+
|
|
|
+ const filteredJobs = collection.filter(item => {
|
|
|
+ const endPublicationDate = new Date(item.endPublication);
|
|
|
+ return endPublicationDate >= currentDate;
|
|
|
+ });
|
|
|
+
|
|
|
+ totalItems.value = filteredJobs.length;
|
|
|
+ console.log(filteredJobs);
|
|
|
+ return filteredJobs;
|
|
|
+});
|
|
|
+
|
|
|
+// const jobs = ref([
|
|
|
+// {
|
|
|
+// id: 1,
|
|
|
+// image: "/images/Opentalent.png",
|
|
|
+// title: "Assistant(e) Commercial(e) h/f",
|
|
|
+// contractType: "CDI",
|
|
|
+// location: "Paris",
|
|
|
+// description:
|
|
|
+// "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
+// properties: ["CDI", "Paris", "Commercial"],
|
|
|
+// },
|
|
|
+// {
|
|
|
+// id: 1,
|
|
|
+// image: "/images/Opentalent.png",
|
|
|
+// title: "Assistant(e) Commercial(e) h/f",
|
|
|
+// contractType: "CDI",
|
|
|
+// location: "Paris",
|
|
|
+// description:
|
|
|
+// "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
+// properties: ["CDI", "Paris", "Commercial"],
|
|
|
+// },
|
|
|
+// {
|
|
|
+// id: 1,
|
|
|
+// image: "/images/Opentalent.png",
|
|
|
+// title: "Assistant(e) Commercial(e) h/f",
|
|
|
+// contractType: "CDI",
|
|
|
+// location: "Paris",
|
|
|
+// description:
|
|
|
+// "Lorem ipsum dolor sit amet. At doloribus nostrum non temporibus quidem est ipsa laborum sed internos dolor in pariatur vitae. ..",
|
|
|
+// properties: ["CDI", "Paris", "Commercial"],
|
|
|
+// },
|
|
|
+// ]);
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|