資料導出與查閱

功能說明

此頁面提供抽獎系統數據的查閱與導出功能:

  • 查看所有參與者的完整資訊
  • 查閱抽獎者獲得的密碼
  • 導出各種格式的數據報表
  • 管理系統數據

搜尋與篩選

參與者資料總覽

總參與者: 0
0 已使用 / 0 未使用

導出選項

數據管理

警告:以下操作不可恢復,請謹慎操作!

新會員首次購物即享全單 9 折優惠!

購物滿 HKD 300.00即享免運費優惠!(適用於 本地送貨、本地取貨 )

沉香

1. 【水晶名稱】 沉香 (Agarwood) 1.1. 水晶介紹 沉香是一種珍貴的香料,來自瑞香科的樹木在受到損傷後,樹脂與木質結合形成的凝結物。沉香的香氣獨特,具有甜美和涼爽的特性,並且需要數百年的時間才能形成。 1.2. 水晶超精簡功效 安神助眠 理氣止痛 提升靈性 抗菌消炎 改善消化 2. 【適合佩戴職業】 醫護人員:抗菌消炎,促進健康 心理諮詢師:安神助眠,提升靈性 瑜伽教練:提升靈性,平衡能量 企業家:理氣止痛,提升專注力 2.1. 【適合佩戴場合】 冥想場合:提升靈性,安神助眠 工作場合:提升專注力,理氣止痛 療癒場合:抗菌消炎,促進健康 社交場合:平衡能量,增強氣場 3. 【需要佩戴人仕】 壓力大者:安神助眠,減輕壓力 消化不良者:改善消化,促進健康 靈性追求者:提升靈性,增強直覺 免疫力低者:抗菌消炎,增強免疫力 4. 【適合佩戴星座】 雙魚座(2月19日-3月20日):提升靈性,增強直覺 巨蟹座(6月21日-7月22日):安神助眠,平衡情緒 天蠍座(10月23日-11月21日):理氣止痛,提升專注力 5. 【適合佩戴生肖】 生肖兔(1951, 1963, 1975, 1987, 1999, 2011, 2023):安神助眠,減輕壓力 生肖羊(1955, 1967, 1979, 1991, 2003, 2015):提升靈性,增強直覺 生肖豬(1959, 1971, 1983, 1995, 2007, 2019):改善消化,促進健康 6. 【所對應脈輪】 心輪:安神助眠,平衡情緒 喉輪:提升靈性,促進溝通 7. 【主要産地】 越南 印尼 馬來西亞 印度 8. 【主功效** 安神助眠:沉香具有安神助眠的功效,能幫助減輕壓力,提升睡眠品質1。 理氣止痛:沉香能理氣止痛,對於消化不良和胃痛有顯著效果2。 提升靈性:沉香能提升靈性,增強直覺和靈感,特別適合冥想和靈性修行3。 抗菌消炎:沉香具有抗菌消炎的特性,能增強免疫力,促進身體健康1。 改善消化:沉香能改善消化系統,幫助消化不良者緩解不適2。 希望這些信息對你有幫助!如果還有其他問題,隨時告訴我哦! 😊 1: 黃連芳製香廠 2: 維基百科 3: 光之薩滿 深入了解 1 hlftaiwan.com.tw 2 zh.wikipedia.org 3 laotoutiao.com 4 agarwood.hk 5 lightofshaman.com +3 更多 您 由 您 傳送: 沉香 所對應脈輪 Copilot 使用 網頁 正在為您產生解答… 由 Copilot 傳送: 沉香(Agarwood)主要對應的脈輪是心輪和喉輪12。 1. 【心輪 (Anahata)】 位置:胸部中央 功能:與愛、同情、關係相關聯,提升情感交流和同理心 功效:沉香能幫助平衡心輪,促進情感的流動,增強愛與寬容的能力1。 2. 【喉輪 (Vishuddha)】 位置:喉嚨 功能:掌管自我表達和溝通能力 功效:沉香能幫助打開喉輪,提升溝通和表達能力,促進內心的真實表達2。
// 更新導出頁面 function updateExportTab() { const participants = Object.keys(lotteryData.emailCodes); const usedCount = participants.filter(email => lotteryData.emailCodes[email].used).length; const unusedCount = participants.length - usedCount; document.getElementById('totalParticipants').textContent = participants.length; document.getElementById('usedCount').textContent = usedCount; document.getElementById('unusedCount').textContent = unusedCount; displayParticipants(participants); } // 顯示參與者表格 function displayParticipants(participantList) { const table = document.getElementById('participantsTable'); if (participantList.length === 0) { table.innerHTML = '
目前沒有參與者資料
'; return; } let tableHTML = ` `; // 按時間排序,最新的在前面 const sortedParticipants = participantList.sort((a, b) => { return lotteryData.emailCodes[b].time - lotteryData.emailCodes[a].time; }); sortedParticipants.forEach((email, index) => { const data = lotteryData.emailCodes[email]; const status = data.used ? '已使用' : '未使用'; const statusColor = data.used ? 'var(--primary-color)' : '#4CAF50'; const registerTime = new Date(data.time).toLocaleString('zh-TW'); // 檢查是否中獎 let lastActivity = '尚未抽獎'; const winnerInfo = lotteryData.winners.find(w => w.email === email); if (winnerInfo) { lastActivity = `中獎: ${winnerInfo.gift}`; } else if (data.used) { lastActivity = '已抽獎未中'; } tableHTML += ` `; }); tableHTML += `
序號 電子郵件 抽獎密碼 狀態 註冊時間 最後活動
${index + 1}
${email}
IP: ${getIP()}
${data.code}
${data.used ? '已使用' : '可使用'}
${status} ${registerTime} ${lastActivity}
`; table.innerHTML = tableHTML; } // 搜尋參與者 function searchParticipants() { const query = document.getElementById('searchQuery').value.toLowerCase().trim(); const statusFilter = document.getElementById('filterStatus').value; let participants = Object.keys(lotteryData.emailCodes); // 應用搜尋過濾 if (query) { participants = participants.filter(email => { const data = lotteryData.emailCodes[email]; return email.toLowerCase().includes(query) || data.code.toLowerCase().includes(query); }); } // 應用狀態過濾 if (statusFilter) { participants = participants.filter(email => { const data = lotteryData.emailCodes[email]; if (statusFilter === 'used') return data.used; if (statusFilter === 'unused') return !data.used; return true; }); } displayParticipants(participants); // 更新計數器 const usedCount = participants.filter(email => lotteryData.emailCodes[email].used).length; const unusedCount = participants.length - usedCount; document.getElementById('totalParticipants').textContent = participants.length; document.getElementById('usedCount').textContent = usedCount; document.getElementById('unusedCount').textContent = unusedCount; } // 清除搜尋 function clearSearch() { document.getElementById('searchQuery').value = ''; document.getElementById('filterStatus').value = ''; searchParticipants(); } // 導出帶有密碼的完整資料 function exportWithPasswords() { const emails = Object.keys(lotteryData.emailCodes); if (emails.length === 0) { alert('目前沒有數據可以導出!'); return; } let csvContent = "data:text/csv;charset=utf-8,\uFEFF"; csvContent += "序號,電子郵件,抽獎密碼,抽獎狀態,註冊時間,最後活動,中獎獎品\n"; emails.forEach((email, index) => { const data = lotteryData.emailCodes[email]; const status = data.used ? '已使用' : '未使用'; const registerTime = new Date(data.time).toLocaleString('zh-TW'); // 檢查是否中獎 let lastActivity = '尚未抽獎'; let prize = ''; const winnerInfo = lotteryData.winners.find(w => w.email === email); if (winnerInfo) { lastActivity = '已中獎'; prize = winnerInfo.gift; } else if (data.used) { lastActivity = '已抽獎未中'; } csvContent += `${index + 1},"${email}","${data.code}","${status}","${registerTime}","${lastActivity}","${prize}"\n`; }); const encodedUri = encodeURI(csvContent); const link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", `抽獎密碼清單_${new Date().toISOString().split('T')[0]}.csv`); document.body.appendChild(link); link.click(); document.body.removeChild(link); alert(`已導出 ${emails.length} 筆資料,包含抽獎密碼!`); } // 導出完整資料 function exportFullData() { let csvContent = "data:text/csv;charset=utf-8,\uFEFF"; csvContent += "數據類型,總數,詳細資訊\n"; // 基本統計 csvContent += `總參與者,${Object.keys(lotteryData.emailCodes).length},\n`; csvContent += `已使用密碼,${Object.keys(lotteryData.emailCodes).filter(email => lotteryData.emailCodes[email].used).length},\n`; csvContent += `未使用密碼,${Object.keys(lotteryData.emailCodes).filter(email => !lotteryData.emailCodes[email].used).length},\n`; csvContent += `總抽獎次數,${lotteryData.stats.totalSpins},\n`; csvContent += `中獎人數,${lotteryData.stats.winners},\n`; csvContent += `中獎率,${lotteryData.stats.totalSpins > 0 ? ((lotteryData.stats.winners / lotteryData.stats.totalSpins) * 100).toFixed(2) : 0}%,\n`; csvContent += `,\n`; // 獎品庫存 csvContent += `獎品名稱,當前庫存,中獎概率,已兌換\n`; lotteryData.gifts.forEach((gift, index) => { if (gift.name !== "未中獎") { const redeemed = gift.stock; // 假設初始庫存為初始值 csvContent += `${gift.name},${gift.stock},${gift.probability}%,${redeemed}\n`; } }); csvContent += `,\n`; // 參與者列表 csvContent += `序號,電子郵件,抽獎密碼,狀態,註冊時間,最後活動,中獎獎品\n`; const emails = Object.keys(lotteryData.emailCodes); emails.forEach((email, index) => { const data = lotteryData.emailCodes[email]; const status = data.used ? '已使用' : '未使用'; const registerTime = new Date(data.time).toLocaleString('zh-TW'); let lastActivity = '尚未抽獎'; let prize = ''; const winnerInfo = lotteryData.winners.find(w => w.email === email); if (winnerInfo) { lastActivity = '已中獎'; prize = winnerInfo.gift; } else if (data.used) { lastActivity = '已抽獎未中'; } csvContent += `${index + 1},"${email}","${data.code}","${status}","${registerTime}","${lastActivity}","${prize}"\n`; }); const encodedUri = encodeURI(csvContent); const link = document.createElement("a"); link.setAttribute("href", encodedUri); link.setAttribute("download", `抽獎完整報表_${new Date().toISOString().split('T')[0]}.csv`); document.body.appendChild(link); link.click(); document.body.removeChild(link); alert(`完整報表已導出,包含 ${emails.length} 位參與者資料!`); } // 清除未使用密碼 function clearUnusedData() { const unusedEmails = Object.keys(lotteryData.emailCodes).filter(email => !lotteryData.emailCodes[email].used); if (unusedEmails.length === 0) { alert('目前沒有未使用的密碼可以清除!'); return; } if (confirm(`確定要清除 ${unusedEmails.length} 個未使用的抽獎密碼嗎?\n此操作不可恢復!`)) { // 從activeCodes中移除未使用的密碼 unusedEmails.forEach(email => { const code = lotteryData.emailCodes[email].code; const index = lotteryData.activeCodes.indexOf(code); if (index > -1) { lotteryData.activeCodes.splice(index, 1); } }); // 移除未使用的email記錄 unusedEmails.forEach(email => { delete lotteryData.emailCodes[email]; }); saveData(); updateExportTab(); alert(`已清除 ${unusedEmails.length} 個未使用的抽獎密碼!`); } } // 清除所有數據 function clearAllData() { if (confirm('警告:這將清除所有抽獎數據(包括電郵地址、密碼、中獎記錄等)!\n\n確定要繼續嗎?')) { // 重置所有數據 lotteryData.activeCodes = []; lotteryData.usedCodes = []; lotteryData.emailCodes = {}; lotteryData.ipRecords = {}; lotteryData.winners = []; lotteryData.stats = { totalSpins: 0, winners: 0, history: [] }; saveData(); updateStats(); updateExportTab(); alert('所有數據已清除!'); } } // 在管理員登入時更新導出頁面 function loginAdmin() { const code = document.getElementById('adminPass').value.trim(); if (code === lotteryData.adminCode) { showAdminPage('adminPanel'); loadSettings(); updateGiftPreview(); updateStats(); updateExportTab(); // 新增這行 } else { alert('管理員密碼錯誤!'); document.getElementById('adminPass').value = ''; document.getElementById('adminPass').focus(); } } // 切換到導出頁面時更新數據 function switchTab(tabId) { // 移除所有active document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active')); document.querySelectorAll('.tab-content').forEach(tab => tab.style.display = 'none'); // 激活當前 document.getElementById(tabId).style.display = 'block'; const activeBtn = document.querySelector(`[onclick="switchTab('${tabId}')"]`); if (activeBtn) { activeBtn.classList.add('active'); } // 更新導出頁面數據 if (tabId === 'exportTab') { updateExportTab(); } }