diff --git a/static/app.js b/static/app.js index 7e4b2bd..df6671b 100644 --- a/static/app.js +++ b/static/app.js @@ -1,5 +1,5 @@ -const searchInput = document.getElementById("searchInput"); -const memberSelect = document.getElementById("memberSelect"); +const ADMIN_MEMBER_ID = 104891; + const generateBtn = document.getElementById("generateBtn"); const statusText = document.getElementById("statusText"); const resultCard = document.getElementById("resultCard"); @@ -16,70 +16,11 @@ const metaQrPrefix = document.getElementById("metaQrPrefix"); const metaPayloadLen = document.getElementById("metaPayloadLen"); const metaPayloadPrefix = document.getElementById("metaPayloadPrefix"); -let allItems = []; - function setStatus(message, isError = false) { statusText.textContent = message; statusText.classList.toggle("error", isError); } -function renderOptions(items) { - memberSelect.innerHTML = ""; - - if (!items.length) { - const option = document.createElement("option"); - option.value = ""; - option.textContent = "没有可选 ID"; - memberSelect.appendChild(option); - return; - } - - for (const item of items) { - const option = document.createElement("option"); - option.value = String(item.member_id); - option.textContent = item.label; - memberSelect.appendChild(option); - } - - if (!memberSelect.value) { - memberSelect.selectedIndex = 0; - } -} - -function filterItems() { - const keyword = searchInput.value.trim().toLowerCase(); - if (!keyword) { - renderOptions(allItems); - setStatus(`已加载 ${allItems.length} 个 ID`); - return; - } - - const filtered = allItems.filter((item) => { - const idText = String(item.member_id); - const village = String(item.village_name || "").toLowerCase(); - return idText.includes(keyword) || village.includes(keyword); - }); - - renderOptions(filtered); - setStatus(`筛选后剩余 ${filtered.length} 个 ID`); -} - -async function loadFoundIds() { - setStatus("正在加载 ID 列表..."); - try { - const response = await fetch("/api/found-ids"); - const data = await response.json(); - if (!response.ok || !data.ok) { - throw new Error(data.error || "加载 ID 列表失败"); - } - allItems = data.items || []; - renderOptions(allItems); - setStatus(`已加载 ${allItems.length} 个 ID`); - } catch (error) { - setStatus(error.message || "加载失败", true); - } -} - function showResult(data) { resultCard.classList.remove("hidden"); qrImage.src = data.data_url; @@ -97,14 +38,8 @@ function showResult(data) { } async function generateQr() { - const memberId = memberSelect.value; - if (!memberId) { - setStatus("请先选择一个 member_id", true); - return; - } - generateBtn.disabled = true; - setStatus(`正在为 ${memberId} 生成二维码...`); + setStatus(`正在生成管理员二维码(member_id=${ADMIN_MEMBER_ID})...`); try { const response = await fetch("/api/generate", { @@ -112,14 +47,14 @@ async function generateQr() { headers: { "Content-Type": "application/json", }, - body: JSON.stringify({ member_id: Number(memberId) }), + 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(`member_id=${memberId} 生成成功`); + setStatus("管理员二维码生成成功"); } catch (error) { setStatus(error.message || "生成失败", true); } finally { @@ -127,8 +62,4 @@ async function generateQr() { } } -searchInput.addEventListener("input", filterItems); generateBtn.addEventListener("click", generateQr); -memberSelect.addEventListener("dblclick", generateQr); - -loadFoundIds(); diff --git a/templates/index.html b/templates/index.html index 455f20b..1084bf5 100644 --- a/templates/index.html +++ b/templates/index.html @@ -10,17 +10,11 @@

MiniApp QR 页面

-

found_ids.txt 里选择一个 ID,然后请求服务端生成二维码。

- - - - - - +

点击生成管理员二维码

- - 正在加载 ID 列表... + + 等待生成
diff --git a/web_app.py b/web_app.py index 7038d5d..85c4484 100644 --- a/web_app.py +++ b/web_app.py @@ -2,9 +2,10 @@ import os from flask import Flask, jsonify, render_template, request -from miniapp_qr_poc import generate_member_qr, load_found_ids +from miniapp_qr_poc import generate_member_qr app = Flask(__name__) +ADMIN_MEMBER_ID = 104891 @app.get("/") @@ -17,24 +18,18 @@ def healthz(): return jsonify({"ok": True}) -@app.get("/api/found-ids") -def api_found_ids(): - items = load_found_ids() - return jsonify({"ok": True, "count": len(items), "items": items}) - - @app.post("/api/generate") def api_generate(): payload = request.get_json(silent=True) if payload is None: payload = request.form - member_id = payload.get("member_id") if payload else None - if member_id is None or str(member_id).strip() == "": - return jsonify({"ok": False, "error": "missing member_id"}), 400 + member_id = ADMIN_MEMBER_ID + if payload and payload.get("member_id") not in (None, "", ADMIN_MEMBER_ID, str(ADMIN_MEMBER_ID)): + return jsonify({"ok": False, "error": f"only member_id={ADMIN_MEMBER_ID} is supported"}), 400 try: - result = generate_member_qr(int(member_id), include_data_url=True) + result = generate_member_qr(member_id, include_data_url=True) except ValueError as exc: return jsonify({"ok": False, "error": str(exc)}), 400 except Exception as exc: