From 9f27300fe65bf31c9d512850c0785feb9c23b8a0 Mon Sep 17 00:00:00 2001 From: kyounggu Date: Tue, 20 Oct 2026 13:07:14 +0900 Subject: [PATCH] =?UTF-8?q?https://soohyun.store/=20=EB=A9=94=ED=83=80=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20body=20=EC=A0=81=EC=9A=A9=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- busan/components/SubjectCarousel.vue | 42 ++++++--- busan/pages/index.vue | 26 +++++- daegu/components/SubjectCarousel.vue | 42 ++++++--- daegu/nuxt.config.ts | 4 +- daegu/pages/index.vue | 27 +++++- daegu/utils/seoHelper.ts | 1 + gwangju/components/SubjectCarousel.vue | 42 ++++++--- gwangju/pages/index.vue | 26 +++++- gyeonggi/components/SubjectCarousel.vue | 42 ++++++--- gyeonggi/pages/index.vue | 26 +++++- incheon/components/SubjectCarousel.vue | 42 ++++++--- incheon/pages/index.vue | 26 +++++- seo_audit.cjs | 117 ++++++++++++++++++++++++ seoul/components/SubjectCarousel.vue | 42 ++++++--- seoul/pages/index.vue | 33 +++++++ site1/components/SubjectCarousel.vue | 42 ++++++--- site1/pages/index.vue | 60 +++++++++--- ulsan/components/SubjectCarousel.vue | 42 ++++++--- ulsan/pages/index.vue | 26 +++++- 19 files changed, 593 insertions(+), 115 deletions(-) create mode 100644 seo_audit.cjs diff --git a/busan/components/SubjectCarousel.vue b/busan/components/SubjectCarousel.vue index b740586..5307a6f 100644 --- a/busan/components/SubjectCarousel.vue +++ b/busan/components/SubjectCarousel.vue @@ -265,20 +265,40 @@ const closeModal = () => { } } -// 모달 내 과목 선택 후 상담 신청 폼으로 이동 +// 모달 내 과목 선택 후 상담 신청 폼으로 이동 및 해당 과목 자동 선택 const applyWithSubject = (subjectName) => { closeModal() - const cleanSubj = subjectName.replace(/과외$/, '') + const cleanSubj = subjectName.replace(/과외$/, '').trim() - const subjSelect = document.getElementById('weakSubject') || document.getElementById('c-subject') - if (subjSelect) { - subjSelect.value = cleanSubj - subjSelect.dispatchEvent(new Event('change')) - } - - const formTarget = document.getElementById('leadFormSection') || document.getElementById('consult-section') - if (formTarget) { - formTarget.scrollIntoView({ behavior: 'smooth' }) + if (typeof window !== 'undefined') { + // 1. 커스텀 이벤트 발송 (Vue 반응형 formData.subject 즉시 업데이트) + window.dispatchEvent(new CustomEvent('select-subject', { detail: { subject: cleanSubj } })) + + setTimeout(() => { + // 2. 칩 버튼 DOM 직접 클릭 트리거 (완벽 호환) + const buttons = document.querySelectorAll('#leadFormSection button') + for (const btn of buttons) { + const text = btn.innerText.trim() + const dataSubj = btn.getAttribute('data-subject') + if (text.startsWith(cleanSubj) || dataSubj === cleanSubj) { + btn.click() + break + } + } + + // 3. input/select fallback + const subjSelect = document.getElementById('weakSubject') || document.getElementById('c-subject') + if (subjSelect) { + subjSelect.value = cleanSubj + subjSelect.dispatchEvent(new Event('change')) + } + + // 4. 상단 폼 위치로 부드럽게 스크롤 이동 + const formTarget = document.getElementById('leadFormSection') || document.getElementById('consult-section') + if (formTarget) { + formTarget.scrollIntoView({ behavior: 'smooth' }) + } + }, 60) } } diff --git a/busan/pages/index.vue b/busan/pages/index.vue index eae55bc..1ea231d 100644 --- a/busan/pages/index.vue +++ b/busan/pages/index.vue @@ -187,7 +187,8 @@