Files
miniapp_qr_portable_bundle/static/app.js
2026-03-23 23:00:59 +08:00

66 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const ADMIN_MEMBER_ID = 104891;
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);