Files
ntspi-app/resources/js/Pages/Main.vue
T
2024-09-19 16:06:49 +05:00

309 lines
12 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<Head>
<title>Главная</title>
<meta name="description" content="Your page description">
</Head>
<MainPageNavBar :sections="$page.props.navigation" :slider-ref="sliderRef" />
<ClientMainSlider @slider-mounted="setSliderRef" :slidersCarousel="sliders" />
<section class="max-w-screen-xl w-full mx-auto px-4 py-3 pb-10">
<h2 class="text-brand-primary my-6 md:mb-[50px] md:mt-[80px] text-2xl font-semibold tracking-tight text-black lg:text-[32px] lg:leading-tight">Последние новости</h2>
<div class="grid gap-10 pb-10 md:grid-cols-2 lg:gap-10 xl:grid-cols-3">
<template v-for="post in posts.data" :key="post.id">
<ClientPost :post="post" />
</template>
</div>
<div class="flex justify-center">
<a :href="route('client.post.index')" class="group mt-3 inline-flex items-center gap-x-1 text-sm font-semibold text-primaryBlue">
Все новости
<svg class="flex-shrink-0 size-4 transition ease-in-out group-hover:translate-x-1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</a>
</div>
<h2 class="text-brand-primary my-6 md:mb-[50px] md:mt-[80px] text-2xl font-semibold tracking-tight text-black lg:text-[32px] lg:leading-tight">Мероприятия</h2>
<!-- Card Blog -->
<div class="max-w-[85rem] pb-10 sm:px-6 lg:px-8 lg:pb-14 mx-auto">
<!-- Title -->
<!-- End Title -->
<!-- Grid -->
<div class="grid sm:grid-cols-2 lg:grid-cols-3 gap-6">
<template v-for="event in events.data">
<Link class="group hover:bg-gray-100 rounded-xl p-5 transition-all" :href="route('client.event.show', event.slug)">
<div class="aspect-w-16 aspect-h-10">
<div class="w-full h-[250px] object-cover rounded-xl bg-[#F8F9FB]">
<div class="flex flex-col px-5 py-5 w-full h-full">
<div class="flex flex-col gap-3 mb-4">
<div class="gap-3 flex items-center">
<div class="shadow-sm">
<div class="block w-[35px] h-[8px] bg-red-400 rounded-t" />
<div class="block w-[35px] h-[27px] bg-white rounded-b text-center font-medium">{{ event.event_date_start.day }}</div>
</div>
<span class=" block first-letter:uppercase">{{ event.event_date_start.month }}</span>
<div class="flex">
<span class="bg-[#E9F2FE] text-sm text-blue-600 px-2 py-1 rounded block">Начало - {{ event.event_date_start.time }}</span>
</div>
</div>
</div>
<div class="flex gap-2">
<span v-if="event.is_online === 1" class="bg-[#E9F2FE] text-sm text-blue-600 px-2 py-1 rounded block">Онлайн</span>
<div v-if="event.is_online === 0">
<span class="bg-[#E9F2FE] text-sm text-blue-600 px-2 py-1 rounded block">{{ event.address }}</span>
</div>
</div>
</div>
</div>
</div>
<h3 class="mt-5 text-xl text-gray-800">
{{ event.title }}
</h3>
<p class="mt-3 inline-flex items-center gap-x-1 text-sm font-semibold text-gray-800">
Перейти
<svg class="flex-shrink-0 size-4 transition ease-in-out group-hover:translate-x-1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</p>
</Link>
</template>
<!-- End Card -->
</div>
<!-- End Grid -->
</div>
<div class="flex justify-center">
<Link :href="route('client.event.index')" class="group mt-3 inline-flex items-center gap-x-1 text-sm font-semibold text-[#1A5AAF]">
Все мероприятия
<svg class="flex-shrink-0 size-4 transition ease-in-out group-hover:translate-x-1" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</Link>
</div>
<!-- End Card Blog -->
<h2 class="text-brand-primary my-10 md:mb-[50px] md:mt-[80px] text-2xl font-semibold tracking-tight text-black lg:text-[32px] lg:leading-tight">Образование</h2>
<div class="grid gap-10 md:grid-cols-1 lg:gap-10 xl:grid-cols-2">
<Link :href="route('client.program.index', {level: 'BACHELOR'})">
<div class="w-full bg-[#E9F2FE] hover:opacity-70 duration-300 rounded group px-10 py-8">
<h3 class="my-3 flex justify-between items-center gap-x-1 text-2xl font-semibold text-gray-800">
<span class="">Бакалавриат</span>
<svg class="flex-shrink-0 size-9 transition ease-in-out duration-300 group-hover:translate-x-2" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</h3>
<p class="font-thin">Построй свою индивидуальную траекторию</p>
<div class="flex mt-[100px] gap-x-4">
<div class="">
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
</div>
</div>
</Link>
<Link :href="route('client.program.index', {level: 'MASTER'})">
<div class="w-full bg-[#F5F5F5] hover:opacity-70 duration-300 rounded group px-10 py-8">
<h3 class="my-3 flex justify-between items-center gap-x-1 text-2xl font-semibold text-gray-800">
<span class="">Магистратура</span>
<svg class="flex-shrink-0 size-9 transition ease-in-out duration-300 group-hover:translate-x-2" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</h3>
<p class="font-thin">Построй свою индивидуальную траекторию</p>
<div class="flex mt-[100px] gap-x-4">
<div class="">
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
</div>
</div>
</Link>
<Link :href="route('client.additionalEducation.index')">
<div class="w-full bg-[#F5F5F5] hover:opacity-70 duration-300 rounded group px-10 py-8">
<h3 class="my-3 flex justify-between items-center gap-x-1 text-2xl font-semibold text-gray-800">
<span class="">Дополнительное образование</span>
<svg class="flex-shrink-0 size-9 transition ease-in-out duration-300 group-hover:translate-x-2" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</h3>
<p class="font-thin">Построй свою индивидуальную траекторию</p>
<div class="flex mt-[100px] gap-x-4">
<div class="">
<span class="block text-xl font-semibold">{{ additional_educations.educations_count }}</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">{{ additional_educations.categories_count }}</span>
<span class="block">Направлений</span>
</div>
</div>
</div>
</Link>
<Link :href="route('client.program.index', {level: 'MIDDLE_LEVEL_SPECIALIST_TRAINING'})">
<div class="w-full bg-[#E9F2FE] hover:opacity-70 duration-300 rounded group px-10 py-8">
<h3 class="my-3 flex justify-between items-center gap-x-1 text-2xl font-semibold text-gray-800">
<span class="">Среднее профессиональное</span>
<svg class="flex-shrink-0 size-9 transition duration-300 ease-in-out group-hover:translate-x-2" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m9 18 6-6-6-6"/></svg>
</h3>
<p class="font-thin">Построй свою индивидуальную траекторию</p>
<div class="flex mt-[100px] gap-x-4">
<div class="">
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
<div>
<span class="block text-xl font-semibold">30</span>
<span class="block">Программ</span>
</div>
</div>
</div>
</Link>
</div>
</section>
<section class="bg-[#F5F5F5] w-full py-10">
<div class="max-w-screen-xl md:flex justify-around w-full mx-auto px-4 py-[50px] flex-wrap">
<div class="mb-[50px] space-y-3">
<h2 class="font-semibold text-[#1A5AAF] text-lg">Контакты</h2>
<div>
<h3 class="font-semibold mb-4">Главный корпус</h3>
<div class="font-light">
<p>622031, Нижний Тагил, Красногвардейская 57</p>
</div>
</div>
<div>
<h3 class="font-semibold mb-4">Свяжитесь с нами</h3>
<div class="flex gap-x-3 font-light">
<p>+7(906)-802-55-59</p>
<p>ntgspi@yandex.ru</p>
</div>
</div>
</div>
<div class="mb-[50px] space-y-3">
<h2 class="font-semibold text-[#1A5AAF] text-lg">Приемная комиссия</h2>
<div>
<h3 class="font-semibold mb-4">Расписание</h3>
<div class="font-light">
<p>Понедельник - Пятница с 08.30 до 17.00</p>
</div>
</div>
<div>
<h3 class="font-semibold mb-4">Ответственный секретарь приемной комиссии</h3>
<div class="font-light">
<p>+7(906)-802-55-59</p>
<p>ntgspi@yandex.ru</p>
</div>
</div>
</div>
<div class="space-y-3">
<h2 class="font-semibold text-[#1A5AAF] text-lg">Полезное</h2>
<div>
<h3 class="font-semibold mb-4">Главный корпус</h3>
<div class="font-light">
<p>Понедельник - Пятница <br> с 08.30 до 17.00</p>
</div>
</div>
<div>
<h3 class="font-semibold mb-4">Ответственный секретарь <br> приемной комиссии</h3>
<div class="font-light">
<p>+7(906)-802-55-59</p>
<p>ntgspi@yandex.ru</p>
</div>
</div>
</div>
</div>
</section>
<ClientFooterDown />
</template>
<script>
import {Head, Link} from "@inertiajs/vue3";
import ClientMainSlider from "@/Components/ClientMainSlider.vue";
import ClientMainSliderSecond from "@/Components/ClientMainSliderSecond.vue";
import ClientFooterDown from "@/Components/ClientFooterDown.vue";
import MainPageNavBar from "@/Navbars/MainPageNavbar.vue";
import ClientPost from "@/Components/ClientPost.vue";
import { ref } from 'vue';
export default {
name: "Main",
data() {
return {
sliderRef: null,
}
},
props: {
posts: {
type: Object,
},
events: {
type: Object,
},
sliders: {
type: Object,
},
additional_educations: {
type: Object,
},
icons: {
type: String,
}
},
components: {
ClientPost,
MainPageNavBar,
ClientFooterDown,
ClientMainSlider,
ClientMainSliderSecond,
Head,
Link,
},
methods: {
setSliderRef(ref) {
this.sliderRef = ref;
},
},
}
</script>
<style scoped>
</style>