66 lines
2.4 KiB
JavaScript
66 lines
2.4 KiB
JavaScript
const ADMIN_MEMBER_ID = 104880;
|
||
|
||
const generateBtn = document.getElementById("generateBtn");
|
||
const statusText = document.getElementById("statusText");
|
||
const resultCard = document.getElementById("resultCard");
|
||
const qrImage = document.getElementById("qrImage");
|
||
const downloadLink = document.getElementById("downloadLink");
|
||
const rawJson = document.getElementById("rawJson");
|
||
|
||
const metaMemberId = document.getElementById("metaMemberId");
|
||
const metaVillage = document.getElementById("metaVillage");
|
||
const metaUuid = document.getElementById("metaUuid");
|
||
const metaStatus = document.getElementById("metaStatus");
|
||
const metaMsg = document.getElementById("metaMsg");
|
||
const metaQrPrefix = document.getElementById("metaQrPrefix");
|
||
const metaPayloadLen = document.getElementById("metaPayloadLen");
|
||
const metaPayloadPrefix = document.getElementById("metaPayloadPrefix");
|
||
|
||
function setStatus(message, isError = false) {
|
||
statusText.textContent = message;
|
||
statusText.classList.toggle("error", isError);
|
||
}
|
||
|
||
function showResult(data) {
|
||
resultCard.classList.remove("hidden");
|
||
qrImage.src = data.data_url;
|
||
downloadLink.href = data.data_url;
|
||
downloadLink.download = `member_${data.member_id}.gif`;
|
||
metaMemberId.textContent = data.member_id ?? "-";
|
||
metaVillage.textContent = data.village_name ?? "-";
|
||
metaUuid.textContent = data.uuid ?? "-";
|
||
metaStatus.textContent = data.status ?? "-";
|
||
metaMsg.textContent = data.msg ?? "-";
|
||
metaQrPrefix.textContent = data.qr_prefix ?? "-";
|
||
metaPayloadLen.textContent = data.payload_len ?? "-";
|
||
metaPayloadPrefix.textContent = data.payload_hex_prefix ?? "-";
|
||
rawJson.textContent = JSON.stringify(data, null, 2);
|
||
}
|
||
|
||
async function generateQr() {
|
||
generateBtn.disabled = true;
|
||
setStatus(`正在生成管理员二维码(member_id=${ADMIN_MEMBER_ID})...`);
|
||
|
||
try {
|
||
const response = await fetch("/api/generate", {
|
||
method: "POST",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
},
|
||
body: JSON.stringify({ member_id: ADMIN_MEMBER_ID }),
|
||
});
|
||
const data = await response.json();
|
||
if (!response.ok || !data.ok) {
|
||
throw new Error(data.error || "生成二维码失败");
|
||
}
|
||
showResult(data);
|
||
setStatus("管理员二维码生成成功");
|
||
} catch (error) {
|
||
setStatus(error.message || "生成失败", true);
|
||
} finally {
|
||
generateBtn.disabled = false;
|
||
}
|
||
}
|
||
|
||
generateBtn.addEventListener("click", generateQr);
|