Просмотр исходного кода

annonces avec données maestro

Maha Bouchiba 2 лет назад
Родитель
Сommit
4e33f9a6ad
3 измененных файлов с 88 добавлено и 41 удалено
  1. 77 37
      components/JoinUs/Missions.vue
  2. 10 3
      pages/actualites/index.vue
  3. 1 1
      pages/nous-rejoindre.vue

+ 77 - 37
components/JoinUs/Missions.vue

@@ -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>

+ 10 - 3
pages/actualites/index.vue

@@ -156,14 +156,21 @@ const {
 } = useLazyAsyncData("files", async () => {
   const response = await apiRequestService.get(baseUrl, query.value);
   const collection = response["hydra:member"];
-  
-  const filteredNews = collection.filter(item => item.type === 'ENTREPRISE');
-  
+
+  // Obtenir la date actuelle
+  const currentDate = new Date();
+
+  const filteredNews = collection.filter(item => {
+    const endPublicationDate = new Date(item.endPublication);
+    return item.type === 'ENTREPRISE' && endPublicationDate >= currentDate;
+  });
+
   totalItems.value = filteredNews.length;
   console.log(filteredNews);
   return filteredNews;
 });
 
+
 watch(page, () => {
   refresh();
 });

+ 1 - 1
pages/nous-rejoindre.vue

@@ -1,7 +1,7 @@
 <template>
   <LayoutNavigation />
   <div v-if="shouldShowStickyMenu" id="sticky-menu">
-    <LayoutUIStickyMenu
+    <CommonStickyMenu
       :shouldShowStickyMenu="shouldShowStickyMenu"
       :squaresData="squaresData"
     />