+ ${vcard.phones && vcard.phones.length > 0 ? `
+
+ ${vcard.phones.slice(0, 3).map(phone => `${phone}`).join('')}
+ ${vcard.phones.length > 3 ? `+${vcard.phones.length - 3}` : ''}
+
+ ` : ''}
+ ${vcard.url ? `
+
+ ${formatUrl(vcard.url)}
+
+ ` : ''}
+
+ `;
+
+ return cardDiv;
+}
+
+// 格式化 URL 显示
+function formatUrl(url) {
+ try {
+ const urlObj = new URL(url);
+ return urlObj.hostname.replace('www.', '');
+ } catch {
+ return url;
+ }
+}
+
+// 显示下载弹框
+function showDownloadModal(vcard) {
+ currentVCardData = vcard;
+
+ const iconUrl = `./icons/${vcard.category}/${vcard.filename}.png`;
+ modalIcon.src = iconUrl;
+ modalIcon.onerror = function() {
+ this.src = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQiIGhlaWdodD0iNjQiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjY0IiBoZWlnaHQ9IjY0IiByeD0iMTIiIGZpbGw9IiNGOEY5RkEiLz4KPHBhdGggZD0iTTMyIDE2QTggOCAwIDAgMSA0MCAyNEE4IDggMCAwIDEgMzIgMzJBOCA4IDAgMCAxIDI0IDI0QTggOCAwIDAgMSAzMiAxNloiIGZpbGw9IiM2NjciLz4KPHBhdGggZD0iTTE2IDQ4VjQ0QTggOCAwIDAgMSAyNCAzNkg0MEE4IDggMCAwIDEgNDggNDRWNDgiIGZpbGw9IiM2NjciLz4KPC9zdmc+Cg==';
+ };
+
+ modalTitle.textContent = vcard.organization;
+ modalOrgName.textContent = vcard.organization;
+
+ // 显示电话号码
+ if (vcard.phones && vcard.phones.length > 0) {
+ modalPhones.innerHTML = `
+