(() => { const $ = (sel) => document.querySelector(sel); const inputEl = $('#queryInput'); const queryBtn = $('#queryBtn'); const summaryBoxEl = $('#summaryBox'); const eventBoxEl = $('#eventBox'); const api = { async request(url) { const res = await fetch(url); const data = await res.json().catch(() => ({})); if (!res.ok || data.ok === false) { throw new Error(data.error || res.statusText || '请求失败'); } return data; }, query(q) { return api.request(`/api/public/ic-cards/query?q=${encodeURIComponent(q)}`); } }; const escapeHtml = (value) => String(value == null ? '' : value) .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); const formatTime = (value) => { if (value == null || value === '') return '---'; const ts = Number(value); const date = Number.isFinite(ts) ? new Date(ts) : new Date(value); return Number.isNaN(date.getTime()) ? String(value) : date.toLocaleString('zh-CN', { hour12: false }); }; const eventTitle = (event) => { const map = { create: '后台建卡', update: '信息更新', topup: '余额充值', order_created: '线上购卡', activated: '正式启用' }; return map[String(event?.type || '').toLowerCase()] || (event?.type || '事件'); }; const renderSummary = (card) => { const shownCardId = card.display_card_id || card.card_id || '---'; summaryBoxEl.className = ''; summaryBoxEl.innerHTML = `
暂无相关事件记录。
${escapeHtml(message)}
`; eventBoxEl.innerHTML = '暂无可显示的事件记录。
正在查询 IC 卡...
'; eventBoxEl.innerHTML = '正在加载事件记录...