const SUPABASE_URL = 'https://chixssrphfgxvqqigkzo.supabase.co';
const SUPABASE_ANON_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImNoaXhzc3JwaGZneHZxcWlna3pvIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzQ2OTE0OTEsImV4cCI6MjA5MDI2NzQ5MX0.Az_Ew2J2zdOMcSV0UNAjBS-LPqGpqhsaN4IyZ5R7iqU';
const sb = supabase.createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
function escapeHtml(value) {
return String(value ?? '').replace(/[&<>"']/g, char => ({
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": '''
}[char]));
}
async function handleSearch() {
const selfNumberTerm = document.getElementById('selfNumberTerm').value.trim();
const trackingNumberTerm = document.getElementById('trackingNumberTerm').value.trim();
const recipientTerm = document.getElementById('recipientTerm').value.trim();
const contentTerm = document.getElementById('searchTerm').value.trim();
const from = document.getElementById('dateFrom').value;
const to = document.getElementById('dateTo').value;
const out = document.getElementById('searchResults');
out.innerHTML = '
正在连接信函数据库并执行检索...
';
let q = sb.from('xinhan').select('*');
if (selfNumberTerm) q = q.ilike('self_number', `%${selfNumberTerm}%`);
if (trackingNumberTerm) q = q.ilike('tracking_number', `%${trackingNumberTerm}%`);
if (recipientTerm) q = q.ilike('recipient', `%${recipientTerm}%`);
if (contentTerm) q = q.ilike('content', `%${contentTerm}%`);
if (from) q = q.gte('sent_date', from);
if (to) q = q.lte('sent_date', to);
const { data, error } = await q.order('sent_date', { ascending: false });
if (error) {
out.innerHTML = `查询失败:${escapeHtml(error.message)}
`;
return;
}
renderResults(data || []);
}
function renderResults(rows) {
const container = document.getElementById('searchResults');
if (!rows.length) {
container.innerHTML = '未找到符合条件的信函记录。
';
return;
}
let html = `
| ID |
自编号 |
快递号 |
收件人 |
目的地 |
寄出日期 |
寄达日期 |
内容摘要 |
`;
rows.forEach(row => {
const content = row.content || '';
const summary = content.length > 60
? `${escapeHtml(content)}`
: escapeHtml(content);
html += `
| ${escapeHtml(row.id)} |
${escapeHtml(row.self_number || '')} |
${escapeHtml(row.tracking_number || '')} |
${escapeHtml(row.recipient || '')} |
${escapeHtml(row.destination || '')} |
${escapeHtml(row.sent_date || '')} |
${escapeHtml(row.arrival_date || '')} |
${summary} |
`;
});
html += '
';
container.innerHTML = html;
}
document.getElementById('searchBtn').addEventListener('click', handleSearch);
function applyQueryParams() {
const params = new URLSearchParams(window.location.search);
const selfNumber =
params.get('q') ||
params.get('self_number') ||
params.get('selfNumber');
if (!selfNumber) return;
document.getElementById('selfNumberTerm').value = selfNumber.trim();
handleSearch();
}
applyQueryParams();