feat: 扫码页支持URL参数自动查询 — /scan?sn=xxx 直接展示流转树

This commit is contained in:
2026-08-12 14:50:44 +08:00
parent ddc34182dd
commit c90b77801d

View File

@ -1,5 +1,6 @@
/** 扫码干活页 — 编排摄像头扫码 + 手动输入 + 查询结果 */ /** 扫码干活页 — 编排摄像头扫码 + 手动输入 + 查询结果 */
import { useState, useCallback, Suspense, lazy } from "react"; import { useState, useCallback, useEffect, Suspense, lazy } from "react";
import { useSearchParams } from "react-router-dom";
import { QrCode, Loader2 } from "lucide-react"; import { QrCode, Loader2 } from "lucide-react";
import { scanProduct } from "../services/productApi"; import { scanProduct } from "../services/productApi";
import type { ProductScanResponse } from "../types/api"; import type { ProductScanResponse } from "../types/api";
@ -10,6 +11,7 @@ import QueryResult from "../components/scan/QueryResult";
const CameraScanner = lazy(() => import("../components/scan/CameraScanner")); const CameraScanner = lazy(() => import("../components/scan/CameraScanner"));
export default function ScanPage() { export default function ScanPage() {
const [searchParams] = useSearchParams();
const [cameraActive, setCameraActive] = useState(false); const [cameraActive, setCameraActive] = useState(false);
const [cameraError, setCameraError] = useState<string | null>(null); const [cameraError, setCameraError] = useState<string | null>(null);
const [serialNumber, setSerialNumber] = useState(""); const [serialNumber, setSerialNumber] = useState("");
@ -39,6 +41,12 @@ export default function ScanPage() {
} }
}, []); }, []);
// URL 参数自动查询(支持从看板等外部跳转)
useEffect(() => {
const sn = searchParams.get("sn");
if (sn) doQuery(sn.trim());
}, [searchParams, doQuery]);
/** 扫码回调:提取纯产品身份证 */ /** 扫码回调:提取纯产品身份证 */
const handleScan = useCallback( const handleScan = useCallback(
(decodedText: string) => { (decodedText: string) => {