"use client"; import { useState } from "react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import * as z from "zod"; import { QRCodeSVG } from "qrcode.react"; import { Car, MessageSquare, QrCode, Info, Copy, Zap, RotateCcw } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { toast } from "sonner"; const formSchema = z.object({ plateNumber: z.string().min(1, "请输入车牌号"), phoneNumber: z .string() .min(1, "请输入联系电话") .regex(/^1[3-9]\d{9}$/, "请输入有效的手机号"), token: z.string(), uid: z.string(), newEnergy: z.boolean(), }); type FormValues = z.infer; export default function MoveCar() { const [generatedUrl, setGeneratedUrl] = useState(""); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { plateNumber: "", phoneNumber: "", token: "", uid: "", newEnergy: false, }, }); const onSubmit = (values: FormValues) => { const url = new URL(window.location.href + "/display"); url.searchParams.append("plateNumber", values.plateNumber); url.searchParams.append("phoneNumber", values.phoneNumber); if (values.token) url.searchParams.append("token", values.token); if (values.uid) url.searchParams.append("uid", values.uid); if (values.newEnergy) url.searchParams.append("new", "true"); setGeneratedUrl(url.toString()); toast.success("码牌生成成功"); }; const copyUrl = async () => { try { await navigator.clipboard.writeText(generatedUrl); toast.success("链接已复制到剪贴板"); } catch { toast.error("复制失败"); } }; const resetForm = () => { form.reset(); setGeneratedUrl(""); }; return (
{/* Page Header */}

挪车码牌生成器

生成专属挪车码牌,让他人轻松联系您,支持微信推送通知

{/* Left: Form */}
车辆信息 ( 车牌号 )} /> ( 联系电话 )} /> (
新能源车辆 勾选此项将在码牌上显示新能源标识
)} />
微信推送设置(可选) 提示 配置微信推送后,当有人扫码时您将收到通知
( Token

WxPusher的应用Token

)} /> ( UID

用户的UID

)} />
需要微信推送? 查看配置文档 →
{/* Right: Preview */}
{generatedUrl ? "生成成功" : "预览区域"} {generatedUrl ? (
码牌生成成功! 扫描二维码或点击链接查看码牌
扫码查看码牌
码牌链接:
{generatedUrl}
) : (

填写完信息后,二维码将在这里显示

)}
{/* Info Card */} 💡 使用说明

功能特点

  • 快速生成专属挪车码牌
  • 支持新能源车辆标识
  • 可选微信推送功能
  • 移动端友好的码牌展示

使用步骤

  1. 填写车牌号和联系电话
  2. 选择是否为新能源车辆
  3. 可选配置微信推送
  4. 点击生成按钮获取码牌
  5. 将二维码放置在车内

微信推送配置

  • 访问 WxPusher 官网注册应用
  • 获取应用 Token 和用户 UID
  • 关注微信公众号绑定账号
  • 配置后可收到扫码通知
); }