Router.register('/shipments/audit', async () => {
// 获取当前用户信息
let userRole = null;
try {
const userRes = await fetch('/api/auth/me', { credentials: 'include' });
const userData = await userRes.json();
userRole = userData.role;
} catch (e) {
console.error('Failed to get user info:', e);
}
setTimeout(async () => {
const queryTypeSelect = document.getElementById('query-type');
const queryBtn = document.getElementById('query-btn');
const queryInput = document.getElementById('query-input');
const inputLabel = document.getElementById('input-label');
const resultDiv = document.getElementById('query-result');
const platformSelect = document.getElementById('platform-select');
// 切换查询类型时更新输入框提示
queryTypeSelect?.addEventListener('change', (e) => {
const queryType = e.target.value;
if (queryType === 'mac') {
inputLabel.textContent = '输入 MAC 地址';
queryInput.placeholder = '可输入带或不带冒号的MAC地址,如:001122AABBCC 或 00:11:22:AA:BB:CC';
} else if (queryType === 'batch') {
inputLabel.textContent = '输入批次号';
queryInput.placeholder = '输入批次号';
}
resultDiv.innerHTML = '';
});
const performQuery = async () => {
const queryType = queryTypeSelect?.value || 'mac';
let queryValue = queryInput?.value?.trim();
const platform = platformSelect?.value || 'pdd';
if (!queryValue) {
resultDiv.innerHTML = `
请输入${queryType === 'mac' ? 'MAC 地址' : '批次号'}
`;
return;
}
// 如果是MAC地址查询,自动格式化(添加冒号)
if (queryType === 'mac') {
// 移除所有非十六进制字符
queryValue = queryValue.replace(/[^a-fA-F0-9]/g, '');
// 如果是12位十六进制,自动格式化为 XX:XX:XX:XX:XX:XX
if (queryValue.length === 12) {
queryValue = queryValue.match(/.{2}/g).join(':').toUpperCase();
}
// 如果是其他长度,尝试格式化
else if (queryValue.length > 0) {
// 统一转为大写
queryValue = queryValue.toUpperCase();
// 如果已经包含冒号,保持原样
if (!queryValue.includes(':')) {
// 尝试每两个字符添加冒号
queryValue = queryValue.match(/.{2}/g)?.join(':') || queryValue;
}
}
}
try {
resultDiv.innerHTML = '查询中...
';
// 根据选择的平台查询审计数据
const res = await fetch(`/api/audit/${platform}/search?${queryType}=${encodeURIComponent(queryValue)}`, {
credentials: 'include'
});
const data = await res.json();
if (data.found && data.records && data.records.length > 0) {
const recordsHtml = data.records.map((record, index) => `
记录 ${index + 1}
MAC地址: ${record.mac || '未知'}
批次号: ${record.batch || '未知'}
审计时间: ${record.ts_cn || '未知'}
备注: ${record.note || '无'}
`).join('');
resultDiv.innerHTML = `
✓ 找到 ${data.records.length} 条审计记录
查询平台: ${platform.toUpperCase()}
查询类型: ${queryType === 'mac' ? 'MAC地址' : '批次号'}
查询值: ${queryValue}
${queryType === 'mac' && queryInput?.value?.trim() !== queryValue ?
`
原始输入: ${queryInput?.value?.trim()}
` : ''
}
${recordsHtml}
`;
} else {
resultDiv.innerHTML = `
✗ 未找到审计记录
查询平台: ${platform.toUpperCase()}
查询类型: ${queryType === 'mac' ? 'MAC地址' : '批次号'}
查询值: ${queryValue}
${queryType === 'mac' && queryInput?.value?.trim() !== queryValue ?
`
原始输入: ${queryInput?.value?.trim()}
` : ''
}
${data.message || '该查询值没有对应的审计记录'}
`;
}
} catch (e) {
resultDiv.innerHTML = `查询失败:${e.message}
`;
}
};
queryBtn?.addEventListener('click', performQuery);
queryInput?.addEventListener('keypress', (e) => {
if (e.key === 'Enter') {
performQuery();
}
});
}, 0);
return `
审计查询
说明:查询 Redis 中存储的审计时间记录,支持通过 MAC 地址或批次号查询。
`;
});