(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); })();