(function () { var page = document.querySelector('#expert-list-page'); if (!page) return; var activeCategory = page.getAttribute('data-default-specialty') || ''; var toastTimer; function showToast(message) { var toast = document.querySelector('#toast'); if (!toast) return; window.clearTimeout(toastTimer); toast.textContent = message; toast.classList.add('is-visible'); toastTimer = window.setTimeout(function () { toast.classList.remove('is-visible'); }, 1800); } function filterAdvisors(category) { activeCategory = category; var cards = document.querySelectorAll('#advisor-list .advisor-card'); var visible = 0; for (var i = 0; i < cards.length; i++) { var primary = (cards[i].getAttribute('data-primary-specialty') || '').trim(); var match = !category || primary === category; if (match) { cards[i].classList.remove('is-hidden'); visible++; } else { cards[i].classList.add('is-hidden'); } } var countEl = document.querySelector('#result-count'); if (countEl) { countEl.textContent = visible ? ('共 ' + visible + ' 位') : '暂无匹配'; } } function selectCategory(category) { var items = document.querySelectorAll('.specialty-item'); for (var i = 0; i < items.length; i++) { var isActive = items[i].getAttribute('data-specialty') === category; if (isActive) { items[i].classList.add('is-active'); } else { items[i].classList.remove('is-active'); } items[i].setAttribute('aria-selected', isActive ? 'true' : 'false'); } filterAdvisors(category); } function showSheet(opts) { document.querySelector('#sheet-kicker').textContent = opts.kicker || ''; document.querySelector('#sheet-title').textContent = opts.title || '咨询师资质'; var imgWrap = document.querySelector('#sheet-cert-img'); if (opts.image) { imgWrap.innerHTML = '专业证书' + '

点击证书可放大查看,支持旋转

'; imgWrap.hidden = false; } else { imgWrap.innerHTML = ''; imgWrap.hidden = true; } document.querySelector('#sheet-backdrop').hidden = false; document.querySelector('#bottom-sheet').hidden = false; document.body.style.overflow = 'hidden'; } function closeSheet() { if (window.ExpertCertViewer && window.ExpertCertViewer.isOpen()) { window.ExpertCertViewer.close(); } document.querySelector('#sheet-backdrop').hidden = true; document.querySelector('#bottom-sheet').hidden = true; document.body.style.overflow = ''; } document.addEventListener('click', function (event) { var preview = event.target.closest('[data-cert-preview]'); if (preview) { event.preventDefault(); event.stopPropagation(); if (window.ExpertCertViewer) { window.ExpertCertViewer.open(preview.getAttribute('data-cert-preview') || preview.getAttribute('src')); } return; } var specialtyButton = event.target.closest('[data-specialty]'); if (specialtyButton) { selectCategory(specialtyButton.getAttribute('data-specialty')); return; } var certBtn = event.target.closest('[data-certificate-open]'); if (certBtn) { event.preventDefault(); event.stopPropagation(); var img = certBtn.getAttribute('data-certify-image') || ''; if (!img) { showToast('暂无证书图片'); return; } showSheet({ kicker: '专业证书', title: certBtn.getAttribute('data-qual') || '咨询师资质', image: img }); return; } if (event.target.closest('.card-button.case') || event.target.closest('a.card-button')) { return; } var goto = event.target.closest('[data-goto-detail]'); if (goto) { var card = goto.closest('.advisor-card'); if (card && card.getAttribute('data-url')) { window.location.href = card.getAttribute('data-url'); } } }); var closeBtn = document.querySelector('#sheet-close'); var primaryBtn = document.querySelector('#sheet-primary'); var backdrop = document.querySelector('#sheet-backdrop'); if (closeBtn) closeBtn.addEventListener('click', closeSheet); if (primaryBtn) primaryBtn.addEventListener('click', closeSheet); if (backdrop) backdrop.addEventListener('click', closeSheet); document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { if (window.ExpertCertViewer && window.ExpertCertViewer.isOpen()) { return; } closeSheet(); } }); selectCategory(activeCategory); })();