diff --git a/qr-collection.html b/qr-collection.html index f7186aa..7e5b82a 100644 --- a/qr-collection.html +++ b/qr-collection.html @@ -233,20 +233,33 @@

二维码合集

-
- -
-

筛选

+
+

筛选

+ +
-
+ +
+
+

筛选用户

+ +
+
+ +
+
+ + + +
空状态 @@ -340,29 +353,58 @@ // 动态生成筛选按钮 function generateFilterButtons(invitees, currentUser) { const filterButtonsContainer = document.querySelector('.filter-buttons'); + const filterSidebarBtn = document.getElementById('filterSidebarBtn'); + const sidebarFilterButtons = document.getElementById('sidebarFilterButtons'); + if (!filterButtonsContainer) return; - // 清空现有按钮,保留"全部"和"我的二维码" + // 清空现有按钮,只保留"全部"和"我的" filterButtonsContainer.innerHTML = ` - - + + `; - // 添加每个邀请者的筛选按钮 - invitees.forEach(invitee => { - // 跳过当前用户自己 - if (invitee.inviter && invitee.inviter !== (currentUser.name || currentUser.userName)) { - const button = document.createElement('button'); - button.className = 'filter-btn'; - button.dataset.filter = `invitee_${encodeURIComponent(invitee.inviter)}`; - button.dataset.inviter = invitee.inviter; - button.textContent = invitee.inviter; - filterButtonsContainer.appendChild(button); + // 为管理员显示筛选按钮并填充侧边栏 + if (invitees && invitees.length > 0) { + // 显示筛选按钮 + if (filterSidebarBtn) { + filterSidebarBtn.style.display = 'block'; } - }); - - // 默认选中"全部" - document.querySelector('.filter-btn[data-filter="all"]').classList.add('active'); + + // 填充侧边栏筛选按钮 + if (sidebarFilterButtons) { + sidebarFilterButtons.innerHTML = ''; + + invitees.forEach(invitee => { + // 跳过当前用户自己 + if (invitee.inviter && invitee.inviter !== (currentUser.name || currentUser.userName)) { + const button = document.createElement('button'); + button.className = 'filter-btn'; + button.style.width = '100%'; + button.style.textAlign = 'left'; + button.style.padding = '8px 12px'; + button.style.border = '1px solid #ddd'; + button.style.borderRadius = '4px'; + button.style.backgroundColor = 'white'; + button.style.color = '#666'; + button.style.fontSize = '14px'; + button.style.cursor = 'pointer'; + button.style.transition = 'all 0.3s'; + button.dataset.filter = `invitee_${encodeURIComponent(invitee.inviter)}`; + button.dataset.inviter = invitee.inviter; + button.textContent = invitee.inviter; + + // 添加点击事件 + button.addEventListener('click', function() { + filterQrCodes(this.dataset.filter, this.dataset.inviter); + closeSidebar(); + }); + + sidebarFilterButtons.appendChild(button); + } + }); + } + } // 绑定筛选按钮事件 document.querySelectorAll('.filter-btn').forEach(btn => { @@ -373,6 +415,26 @@ }); }); } + + // 打开筛选侧边栏 + function openSidebar() { + const sidebar = document.getElementById('filterSidebar'); + const overlay = document.getElementById('sidebarOverlay'); + if (sidebar && overlay) { + sidebar.style.right = '0'; + overlay.style.display = 'block'; + } + } + + // 关闭筛选侧边栏 + function closeSidebar() { + const sidebar = document.getElementById('filterSidebar'); + const overlay = document.getElementById('sidebarOverlay'); + if (sidebar && overlay) { + sidebar.style.right = '-300px'; + overlay.style.display = 'none'; + } + } // 渲染二维码合集 function renderQrCollection(qrCodes, currentUser, isAdmin) { @@ -482,6 +544,24 @@ // 页面加载时加载二维码合集 window.onload = function() { loadQrCollection(); + + // 绑定筛选侧边栏按钮事件 + const filterSidebarBtn = document.getElementById('filterSidebarBtn'); + if (filterSidebarBtn) { + filterSidebarBtn.addEventListener('click', openSidebar); + } + + // 绑定关闭侧边栏按钮事件 + const closeSidebarBtn = document.getElementById('closeSidebarBtn'); + if (closeSidebarBtn) { + closeSidebarBtn.addEventListener('click', closeSidebar); + } + + // 点击遮罩层关闭侧边栏 + const sidebarOverlay = document.getElementById('sidebarOverlay'); + if (sidebarOverlay) { + sidebarOverlay.addEventListener('click', closeSidebar); + } };