diff --git a/frontend/src/pages/admin/AdminTasksPage.tsx b/frontend/src/pages/admin/AdminTasksPage.tsx index 01e2f1c..aa58b27 100644 --- a/frontend/src/pages/admin/AdminTasksPage.tsx +++ b/frontend/src/pages/admin/AdminTasksPage.tsx @@ -55,6 +55,7 @@ export default function AdminTasksPage() { // 弹窗 const [modalTarget, setModalTarget] = useState(null); const [submitting, setSubmitting] = useState(false); + const [qrSerial, setQrSerial] = useState(null); // 🔧 QR弹窗 // ---- 加载产品列表(始终拉全量,不做服务端状态过滤) ---- async function loadProducts(kw: string) { @@ -373,7 +374,7 @@ export default function AdminTasksPage() { return (
-
{p.serial_number}
+
setQrSerial(p.serial_number)} title="点击查看二维码">{p.serial_number}
{p.external_serial || "—"}
{p.spec_model || p.material_name || p.material_id || "—"}
{p.overall_status || "—"}
@@ -437,6 +438,19 @@ export default function AdminTasksPage() {
)} + {/* 🔧 二维码弹窗 */} + {qrSerial && ( +
setQrSerial(null)}> +
+
e.stopPropagation()}> +

产品二维码

+ {`QR-${qrSerial}`} +

{qrSerial}

+ +
+
+ )} + {/* ---- 弹窗 ---- */} .tree-canvas-fullscreen { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 100; display: flex; flex-direction: column; background: #e8ecf0; } -.tc-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; padding-top: calc(10px + env(safe-area-inset-top)); background: rgba(255,255,255,0.95); backdrop-filter: blur(10px); border-bottom: 1px solid #e5e7eb; flex-shrink: 0; z-index: 10; } +.tc-toolbar { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; padding-top: calc(10px + env(safe-area-inset-top)); background: rgba(255,255,255,0.95); backdrop-filter: blur(10px); border-bottom: 1px solid #e5e7eb; flex-shrink: 0; z-index: 999; } .tc-toolbar-left { display: flex; align-items: center; gap: 12px; } .tc-back-btn { font-size: 14px; font-weight: 700; color: #2563eb; padding: 6px 12px; background: #eff6ff; border-radius: 8px; } .tc-title { font-size: 16px; font-weight: 800; color: #1f2937; }