modified: main_dc/yalarba/easySite/easySite/app/assets/css/travel.css

modified:   main_dc/yalarba/easySite/easySite/app/components/layout/Careers.vue
fix bag with non working button in head of vacations page easysite102.ru
This commit is contained in:
2025-11-01 12:14:28 +05:00
parent 738b48eabd
commit ff16cfd0f6
2 changed files with 71 additions and 21 deletions
@@ -20,6 +20,7 @@
bottom: 0; bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><polygon fill="%230ea5e9" points="0,1000 1000,0 1000,1000"/></svg>'); background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><polygon fill="%230ea5e9" points="0,1000 1000,0 1000,1000"/></svg>');
opacity: 0.1; opacity: 0.1;
z-index: -1;
} }
/* Карточки туров */ /* Карточки туров */
@@ -12,12 +12,12 @@
Создаем digital-будущее вместе через open-source Создаем digital-будущее вместе через open-source
</p> </p>
<div class="hero-actions"> <div class="hero-actions">
<button class="btn btn-primary" @click="showContactForm = true"> <NuxtLink class="btn btn-primary" @click="handleJoinTeam()">
Присоединиться к команде Присоединиться к команде
</button> </NuxtLink>
<a href="#vacancies" class="btn btn-outline"> <NuxtLink to="#vacancies" class="btn btn-outline">
Смотреть вакансии Смотреть вакансии
</a> </NuxtLink>
</div> </div>
</div> </div>
</div> </div>
@@ -60,7 +60,7 @@
<div class="container"> <div class="container">
<h2 class="section-title">👥 Кого мы ищем:</h2> <h2 class="section-title">👥 Кого мы ищем:</h2>
<div class="vacancies-grid"> <div id="vacancies" class="vacancies-grid">
<!-- Frontend --> <!-- Frontend -->
<div class="vacancy-card"> <div class="vacancy-card">
<div class="vacancy-header"> <div class="vacancy-header">
@@ -430,8 +430,9 @@
</div> </div>
</section> </section>
<div id="contact"></div>
<!-- Модальное окно контактов --> <!-- Модальное окно контактов -->
<div v-if="showContactForm" class="modal-overlay" @click="showContactForm = false"> <div v-if="showContactForm" id="contact" class="modal-overlay" @click="showContactForm = false">
<div class="modal-content" @click.stop> <div class="modal-content" @click.stop>
<button class="modal-close" @click="showContactForm = false">×</button> <button class="modal-close" @click="showContactForm = false">×</button>
@@ -507,7 +508,7 @@
const { sendMessageToTelegram } = useTelegram(); const { sendMessageToTelegram } = useTelegram();
const showContactForm = ref(false) const showContactForm = ref(false)
const loading = ref(false) const loading = ref(false)
const toast = useToast() const toast = useToast()
const form = ref({ const form = ref({
name: '', name: '',
email: '', email: '',
@@ -521,7 +522,7 @@ const form = ref({
const formatTelegramMessage = (formData) => { const formatTelegramMessage = (formData) => {
const roleLabels = { const roleLabels = {
'frontend': 'Frontend Developer', 'frontend': 'Frontend Developer',
'backend': 'Backend Developer', 'backend': 'Backend Developer',
'analytics': 'Data Analyst', 'analytics': 'Data Analyst',
'designer': 'Product Designer', 'designer': 'Product Designer',
'sales': 'Sales & Strategy', 'sales': 'Sales & Strategy',
@@ -530,14 +531,14 @@ const formatTelegramMessage = (formData) => {
'smm': 'SMM Specialist', 'smm': 'SMM Specialist',
'copywriter': 'Копирайтер', 'copywriter': 'Копирайтер',
'seo-copy': 'SEO + Копирайтинг', 'seo-copy': 'SEO + Копирайтинг',
'smm-copy': 'SMM + Копирайтинг', 'smm-copy': 'SMM + Копирайтинг',
'smm-seo': 'SMM + SEO', 'smm-seo': 'SMM + SEO',
'digital-marketing': 'Digital Marketing (полный цикл)', 'digital-marketing': 'Digital Marketing (полный цикл)',
'other': 'Другое' 'other': 'Другое'
}; };
const roleName = roleLabels[formData.role] || formData.role; const roleName = roleLabels[formData.role] || formData.role;
return `🎯 <b>Новая заявка в команду!</b> return `🎯 <b>Новая заявка в команду!</b>
👤 <b>Имя:</b> ${formData.name} 👤 <b>Имя:</b> ${formData.name}
@@ -559,7 +560,7 @@ const submitForm = async () => {
try { try {
// Форматируем сообщение для Telegram // Форматируем сообщение для Telegram
const telegramMessage = formatTelegramMessage(form.value); const telegramMessage = formatTelegramMessage(form.value);
// Отправляем в Telegram // Отправляем в Telegram
const { success, error } = await sendMessageToTelegram(telegramMessage); const { success, error } = await sendMessageToTelegram(telegramMessage);
@@ -575,23 +576,23 @@ const submitForm = async () => {
// Закрываем модальное окно // Закрываем модальное окно
showContactForm.value = false showContactForm.value = false
// Сбрасываем форму // Сбрасываем форму
form.value = { form.value = {
name: '', name: '',
email: '', email: '',
role: '', role: '',
message: '', message: '',
portfolio: '' portfolio: ''
} }
} else { } else {
throw new Error(error || 'Ошибка отправки в Telegram'); throw new Error(error || 'Ошибка отправки в Telegram');
} }
} catch (error) { } catch (error) {
console.error('Ошибка отправки формы:', error) console.error('Ошибка отправки формы:', error)
// Показываем уведомление об ошибке // Показываем уведомление об ошибке
if (error.message.includes('Telegram') || error.message.includes('сети')) { if (error.message.includes('Telegram') || error.message.includes('сети')) {
toast.add({ toast.add({
@@ -615,6 +616,25 @@ const submitForm = async () => {
} }
} }
// Функция для прокрутки к вакансиям
const scrollToVacancies = () => {
nextTick(() => {
const vacanciesSection = document.getElementById('vacancies');
if (vacanciesSection) {
vacanciesSection.scrollIntoView({
behavior: 'smooth',
block: 'start'
});
}
});
};
// Функция для открытия формы
const handleJoinTeam = () => {
showContactForm.value = true;
};
// SEO мета-теги // SEO мета-теги
useSeoMeta({ useSeoMeta({
title: 'Присоединиться к команде - ЯЛ АРБА', title: 'Присоединиться к команде - ЯЛ АРБА',
@@ -622,6 +642,8 @@ useSeoMeta({
ogTitle: 'Вакансии в стартап ЯЛ АРБА', ogTitle: 'Вакансии в стартап ЯЛ АРБА',
ogDescription: 'Ищем тимейтов для роста и прорыва. Создаем будущее вместе.' ogDescription: 'Ищем тимейтов для роста и прорыва. Создаем будущее вместе.'
}) })
</script> </script>
<style scoped> <style scoped>
@@ -1300,4 +1322,31 @@ useSeoMeta({
padding: var(--space-md); padding: var(--space-md);
} }
} }
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
cursor: pointer;
border: none;
font-family: inherit;
}
/* Стили для NuxtLink если используете */
.btn.btn-outline {
border: 1px solid var(--primary-500);
background: transparent;
color: var(--primary-500);
transition: all 0.2s;
}
.btn.btn-outline:hover {
background: var(--primary-500);
color: var(--text-inverse);
}
.hero-actions .btn {
pointer-events: auto !important;
}
</style> </style>